CMP0012¶
警告
此策略的 OLD
行为已在 CMake 4.0 版本中移除。此策略必须通过调用 cmake_minimum_required()
或 cmake_policy()
来设置为 NEW
。
if()
识别数字和布尔常量。
在 CMake 2.6.4 及更低版本中,if()
命令会隐式解引用与变量对应的参数,即使这些变量名类似于数字或布尔常量,但 0
和 1
除外。数字和布尔常量,例如 true
、false
、yes
、no
、on
、off
、y
、n
、notfound
、ignore
(所有均不区分大小写)在某些情况下会被识别,但并非全部。例如,代码 if(TRUE)
可能会评估为 false
。像 2 这样的数字仅在布尔表达式如 if(NOT 2)
(导致 false
)中被识别,但在像 if(2)
(同样导致 false
)这样的单参数表达式中不被识别。后来的 CMake 版本更倾向于字面量处理数字和布尔常量,因此不应将它们用作变量名。
此策略的 OLD
行为是隐式解引用名为数字和布尔常量的变量。此策略的 NEW
行为是不解引用此类名称的变量,而是识别数字和布尔常量。
此策略在 CMake 2.8.0 版本中引入。在 4.0 版本中移除之前,可以通过 cmake_policy()
或 cmake_minimum_required()
来设置。如果未设置,CMake 会发出警告并使用 OLD
行为。