【发布时间】:2020-04-13 12:22:52
【问题描述】:
我的 hello.txt
cmake_policy(SET CMP0054 NEW)
set(VAR ON)
# VAR will be treated as a string
if("VAR")
message(TRUE)
else()
message(FALSE)
endif()
# output prints FALSE
来自政策 CMP0054:
为了防止歧义,可以在带引号的参数或括号参数中指定潜在的变量或关键字名称。带引号或括号的变量或关键字将被解释为字符串,不会被取消引用或解释。请参阅政策 CMP0054。
CMake 文档没有提到 if(<string>):
if(<variable|string>)如果给定一个定义为非假常量值的变量,则为真。否则为假。 (注意宏参数不是变量。)
为什么非空字符串的计算结果为FALSE?
【问题讨论】:
-
在文档中,
False otherwise似乎给出了答案?将非空字符串视为 false 的行为很奇怪。
标签: cmake cmake-language