假设ABC
中有两个库XYZ
,ABC_FOUND
和两个变量XYZ_FOUND
CMakeLists.txt
。在config.h.in
文件中,我有以下几行
#define __USE_ABC__ @ABC_FOUND@
#define __USE_XYZ__ @XYZ_FOUND@
如果我configure_file(config.h.in config.h)
,则输出config.h
文件将更改为
#define __USE_ABC__ ON
#define __USE_XYZ__ OFF
我的问题是如何将ON
/ OFF
选项转换为1
/ 0
,换句话说,我想要的输出config.h
应该是
#define __USE_ABC__ 1
#define __USE_XYZ__ 0
答案 0 :(得分:2)
使用
将ABC_FOUND
定义为0
或1
#cmakedefine01 @ABC_FOUND@
在任一环境中使用中间变量将其更改为USE_ABC
。
答案 1 :(得分:0)
可能,您应该使用#cmakedefine而不是硬定义(请参阅示例,例如here)
但请记住,在#cmakedefine
的情况下,您会得到一个配置标头,其中“启用的功能”(就CMake if()
命令而言)为#define
- d为提供的值,而“禁用的功能”是#undef
- 。因此,您应该使用#if <something>
而不是#ifdef <something>
来测试它们。