gpt4 book ai didi

cmake 相当于 autoconf AC_ARG_WITH

转载 作者:行者123 更新时间:2023-12-02 03:19:27 25 4
gpt4 key购买 nike

autoconf 的 AC_ARG_WITH 的 cmake 等价物是什么?在 autoconf 中,我可以使用 AC_ARG_WITH 创建一个“--with-”命令行参数来配置,让我将路径传递给 SDK,在该路径下是 header 和库。我如何在 cmake 中做同样的事情?我应该从环境变量中读取路径吗?

最佳答案

cmake可执行文件以命令行形式接受变量定义

-D<var_name>[:<TYPE>]=<value>

( :[<TYPE>] 部分在 cmake documentation 中注明,但可以省略)。

此类变量会自动添加到 CMake 缓存中,并可供项目的 cmake 脚本使用。

对于3d-party项目的安装路径常用的成语是:

CMakeLists.txt:

find_library(SDK_LIB sdk PATHS ${SDK_DIR} PATH_SUFFIXES lib)
find_path(SDK_INCLUDE_DIR sdk.h PATHS ${SDK_DIR} PATH_SUFFIXES include)

如果SDK_DIR设置变量后,其值(带有适当的后缀)将用于搜索 SDK 库(SDK_LIB)和包含目录(SDK_INCLUDE_DIR)。

如果变量没有设置,或者基于它的值搜索失败,搜索将在其他地方继续搜索,包括系统默认的地方。


实际上,在 CMake 中调整包的路径比 AC_ARG_WITH 提供的路径灵活得多。在自动工具中。例如,可以使用 CMAKE_PREFIX_PATH 传递所有 3d 方包的共同根。使用 CMAKE_LIBRARY_PATH所有 库的变量或公共(public)根.请参阅有关 find_library 的文档及其他find_*命令获取更多详细信息。

许多 3d 方包提供 Find<name>.cmake和/或 <name>Config.cmake脚本,因此可以简单地使用 find_package 搜索它们命令。这些脚本(和 find_package 本身)提供了调整搜索路径的方法,因此您的包根本不需要为路径的调整操心

关于cmake 相当于 autoconf AC_ARG_WITH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34447403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com