我在CMakeLists.txt中有以下代码
add_definitions("-DVAR=${VAR}")
字符串
然后像这样运行命令:
cmake -DVAR=ON
型
在我的C++代码中,我有:
#if VAR
//do this
#else
//do this
#endif
型
我看到的问题总是#else
语句被执行,即使VAR = ON
。
我从这里看到,在这种情况下最好使用#if
而不是#ifdef
https://stackoverflow.com/a/3803108/13663443,这对我也没有帮助CMake conditional preprocessor define on code
有人能帮忙吗?
1条答案
按热度按时间jv2fixgn1#
#if ON
将为false(假设ON
没有在某处定义,未定义的宏将计算为0
)。尝试
cmake -DVAR=1
,或者,如果你想保留你当前的命令行,改变你的cmake文件:字符串
else分支并不是绝对必要的,因为如果
VAR
未定义,#if VAR
将评估为false,但它更可靠,因为如果其他东西重新定义了VAR
,您将获得警告。