在CMake不工作的情况下从cmd行获取定义宏

yyyllmsg  于 2023-11-19  发布在  其他
关注(0)|答案(1)|浏览(131)

我在CMakeLists.txt中有以下代码

add_definitions("-DVAR=${VAR}")

字符串
然后像这样运行命令:

cmake -DVAR=ON


在我的C++代码中,我有:

#if VAR
//do this
#else
//do this
#endif


我看到的问题总是#else语句被执行,即使VAR = ON
我从这里看到,在这种情况下最好使用#if而不是#ifdefhttps://stackoverflow.com/a/3803108/13663443,这对我也没有帮助CMake conditional preprocessor define on code
有人能帮忙吗?

jv2fixgn

jv2fixgn1#

#if ON将为false(假设ON没有在某处定义,未定义的宏将计算为0)。
尝试cmake -DVAR=1,或者,如果你想保留你当前的命令行,改变你的cmake文件:

if (VAR)
  add_definitions("-DVAR=1")
else()
  add_definitions("-DVAR=0")
endif()

字符串
else分支并不是绝对必要的,因为如果VAR未定义,#if VAR将评估为false,但它更可靠,因为如果其他东西重新定义了VAR,您将获得警告。

相关问题