从 cmd 行获取定义宏,CMake 不起作用

Getting a define macro from cmd line with CMake not working

提问人:Idriss 提问时间:11/16/2023 最后编辑:Idriss 更新时间:11/16/2023 访问量:52

问:

我在CMakeLists.txt中有以下代码

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

并运行命令,如下所示:

cmake -DVAR=ON

在我的 c++ 代码中,我有这个:

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

我看到的问题始终是正在执行的语句,即使.#elseVAR = ON

我看到最好使用,而不是在这种情况下从这里 https://stackoverflow.com/a/3803108/13663443,这对我也没有帮助 CMake 条件预处理器在代码上定义#if#ifdef

有人可以帮忙吗?

C++ CMake

评论

0赞 Eljay 11/16/2023
的数值可能是 0,这意味着将使用手臂。ON#else

答:

1赞 Alan Birtles 11/16/2023 #1

#if ON将为 false(假设未在某处定义,未定义的宏计算结果为 )。ON0

尝试,或者,如果你想保留你的当前命令行,改变你的cmake文件:cmake -DVAR=1

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

else 分支并不是绝对必要的,因为如果未定义,则计算结果为 false,但它更可靠,因为如果其他内容重新定义,您将收到警告。#if VARVARVAR