- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
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/
我正在构建我的第一个 autoconf 托管包。 但是,我在任何地方都找不到任何简单的示例来说明如何指定所需的库,并在不同的地方找到该库。 我目前有: AC_CHECK_LIB(['event'],
现在我正尝试在我的 Mac 上构建 Automake,到目前为止一切都进展顺利。我构建了 Autoconf 和 m4,没有任何问题(与 git pulls 相反)。然后我去了 Automake,这就是
我正在尝试在 RedHat Linux 机器上构建 ZooKeeper。 (ZooKeeper 到底是什么可能并不重要:-) 当我按照包装说明进行操作时,我得到: $ autoreconf -if
我对 autoconf 和 automake 的工作原理有非常基本的了解,这是从各种教程中收集的。但是,由于我希望我的库在构建过程中具有灵 active ,因此它们需要具有其他软件中常见的 --wit
为什么 autoconf 脚本中的条件语句在它们的变量前加上“x”?例如,GNU 提供的用于测试 Boost 的宏具有条件,例如 if test "x$want_boost" = "xyes"; th
我已经从 Autoconf Archive 下载了一个宏,我想使用它。我必须在我的 configure.ac 文件中放入什么才能使用这个宏? 最佳答案 您可能希望将 AC_CONFIG_MACRO_D
我正在开发一个将与 GNU autoconf/automake 一起分发的项目,并且我有一组调用 awk 脚本的 bash 脚本。我希望 bash 脚本最终出现在 $PATH 中,而不是 awk 脚本
我正在使用自动配置。现在我有一个生成的中间 .cpp 文件。我想在执行“make clean”时删除 .cpp 文件。 我尝试在 CONFIG_CLEAN_FILES 中指定文件变量,但这仅在我执行
我正在尝试构建 Gecko 代码,我从 Github 克隆了它: git clone https://github.com/mozilla/gecko-dev.git 我收到 autoconf 2.1
我正在运行 autoconf 并配置将 SHELL 设置为“/bin/sh”。这造成了巨大的问题。如何强制 SHELL 为 autoconf 的 '/bin/bash'? 我试图让它在 osx 上运行
文件说 Macro: AS_IF (test1, [run-if-true1], ..., [run-if-false]) Run shell code test1. If test1 exits w
当我运行 ./configure 时,它有时会认为它太旧了,并通过丢失的脚本重新运行 autoconf 以重新生成自身。有时它会导致奇怪的损坏,因为 autoconf 目标机器比最初用于生成配置的
我有一个configure.ac文件,其中包含以下行: AC_DEFINE(CONF_XDISP, ":8", "X screen number") 这些常量在C源代码中用于设置编译默认值。我还有一个
我想在 [] 中重新组合多个语句: AC_ARG_WITH( [float], [AS_HELP_STRING( [--with-float], [us
我正在尝试编写一个configure.ac文件,以便生成的配置脚本搜索包含给定静态库的库目录,例如libsomething.a.我怎样才能做到这一点?目前我让它只检查一个位置: AC_CHECK_FI
我已经了解了 CFLAGS and CPPFLAGS 之间的区别。但我的 Makefile.am 目前同时使用 DEFS 和 CPPFLAGS,我不确定其中的区别。 DEFS += -DLOCALED
我已经了解了 CFLAGS and CPPFLAGS 之间的区别。但我的 Makefile.am 目前同时使用 DEFS 和 CPPFLAGS,我不确定其中的区别。 DEFS += -DLOCALED
在我的 configure.ac 文件中,我有这样的警告和错误: AC_MSG_ERROR([找不到 Boost Math 头文件,您是否正确指定了 --with-boost-include-path
我正在尝试构建一个项目,但它抛出了一个错误: autoreconf: running: /usr/bin/autoconf --force configure.ac:19: error: possib
我有一个 C++ autoconf 管理的项目,我正在适应在 FreeBSD 主机上进行编译。 原来的系统是 Linux,所以我做了一个 AM_CONDITIONAL 来区分我正在构建的主机并将代码分
我是一名优秀的程序员,十分优秀!