提问人:Idriss 提问时间:11/16/2023 最后编辑:Idriss 更新时间:11/16/2023 访问量:52
从 cmd 行获取定义宏,CMake 不起作用
Getting a define macro from cmd line with CMake not working
问:
我在CMakeLists.txt中有以下代码
add_definitions("-DVAR=${VAR}")
并运行命令,如下所示:
cmake -DVAR=ON
在我的 c++ 代码中,我有这个:
#if VAR
//do this
#else
//do this
#endif
我看到的问题始终是正在执行的语句,即使.#else
VAR = ON
我看到最好使用,而不是在这种情况下从这里 https://stackoverflow.com/a/3803108/13663443,这对我也没有帮助 CMake 条件预处理器在代码上定义#if
#ifdef
有人可以帮忙吗?
答:
1赞
Alan Birtles
11/16/2023
#1
#if ON
将为 false(假设未在某处定义,未定义的宏计算结果为 )。ON
0
尝试,或者,如果你想保留你的当前命令行,改变你的cmake文件:cmake -DVAR=1
if (VAR)
add_definitions("-DVAR=1")
else()
add_definitions("-DVAR=0")
endif()
else 分支并不是绝对必要的,因为如果未定义,则计算结果为 false,但它更可靠,因为如果其他内容重新定义,您将收到警告。#if VAR
VAR
VAR
评论
ON
#else