使用Autotools时,通常config.h通过如下指定AC_CONFIG_HEADERS宏来生成文件configure.ac:
AC_CONFIG_HEADERS([config.h])
Run Code Online (Sandbox Code Playgroud)
使用CMake时,相应的等价物是什么?
usr*_*567 10
你必须创建一个类似的文件config.h.in.就像是
#cmakedefine HAVE_FEATURE_A @Feature_A_FOUND@
#cmakedefine HAVE_FEATURE_B @Feature_B_FOUND@
#cmakedefine HAVE_FEATURE_BITS @B_BITSIZE@
Run Code Online (Sandbox Code Playgroud)
然后,你必须声明变量Feature_A_FOUND,Feature_B_FOUND,B_BITSIZE在你的CMake的代码和呼叫
configure_file(config.h.in config.h)
Run Code Online (Sandbox Code Playgroud)
这将导致config.h文件类似于autotools中的文件.如果未找到变量或将其设置为false,则将对该行进行注释.否则将插入该值.假设Feature_A_FOUND=A-NOTFOUND¸ Feature_B_FOUND=/usr/lib/b,, B_BITSIZE=64这将导致
/* #undef HAVE_FEATURE_A @Feature_A_FOUND@ */
#define HAVE_FEATURE_B /usr/lib/b
#define HAVE_FEATURE_BITS 64
Run Code Online (Sandbox Code Playgroud)
可能会更好地定义HAVE_FEATURE_B,#cmakedefine01其结果为0或1,具体取决于变量的值.
通常,可以创建由Autotools生成的每个config.h文件,因为CMake更灵活.但它需要更多的工作,你不能自动获得config.h,但你必须自己编写.in文件.
文档:https: //cmake.org/cmake/help/v3.6/command/configure_file.html
| 归档时间: |
|
| 查看次数: |
4045 次 |
| 最近记录: |