2014-12-04 74 views
0

假设我有两个库ABC,XYZ和两个变量ABC_FOUNDXYZ_FOUNDCMakeLists.txt。在config.h.in文件,我有以下行CMake configure_file用1/0替代ON/OFF

#define __USE_ABC__ @[email protected] 
#define __USE_XYZ__ @[email protected] 

如果我做configure_file(config.h.in config.h),输出config.h文件将被改为

#define __USE_ABC__ ON 
#define __USE_XYZ__ OFF 

我的问题是如何转换的ON/OFF选项进入换句话说,我的理想输出config.h应该是

#define __USE_ABC__ 1 
#define __USE_XYZ__ 0 

回答

2

定义ABC_FOUND要么01

#cmakedefine01 @[email protected] 

使用一个中间变量在任一环境将其改为USE_ABC

0

可能,您应该使用#cmakedefine而不是硬定义(请参阅示例here

但请记住,在#cmakedefine的情况下,你得到的配置头,其中“启用的功能”(在CMake的if()命令)的条款#define -d为提供的价值,而“禁用功能”是#undef - 独立非执行董事。所以你不应该用#if <something>而是用#ifdef <something>来测试它们。