考虑以下 CMake 代码:
if(VAR_1 STREQUAL VAR_2)
set(VAR_3 ON)
else()
set(VAR_3 OFF)
endif()
Run Code Online (Sandbox Code Playgroud)
我想写同样的东西,但作为一个单行。我并不特别关心VAR_3
最终使用哪种布尔表示。所以我需要的是将它设置为布尔表达式的评估结果。
现在,这不起作用:
set(VAR_3 (VAR_1 STREQUAL VAR_2) )
Run Code Online (Sandbox Code Playgroud)
这也不是:
set(VAR_3 (${VAR_1} STREQUAL ${VAR_2}) )
Run Code Online (Sandbox Code Playgroud)
相反,他们给了我类似的东西;ValueOfVar1Here;STREQUAL;ValueOfVar2Here;
——这不是我想要的。
我能以某种方式得到我想要的评价吗?
不,你不能。一行只有一个cmake命令。每个 cmake 脚本命令调用都必须以 a 结尾)
(可选地后跟注释),后跟换行符(请参阅有关源文件的 cmake 文档)。您仍然可以编写一个宏来执行您想要的操作。
macro(assign_me_bool var)
if(${ARGN})
set(${var} ON)
else()
set(${var} OFF)
endif()
endmacro()
assign_me_bool(VAR_3 VAR_1 STREQUAL VAR_2)
Run Code Online (Sandbox Code Playgroud)