CMP0012¶
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 中引入。可以通过 cmake_policy()
或 cmake_minimum_required()
设置。如果未设置,CMake 会发出警告,并使用 OLD
行为。
注意
策略的 OLD
行为在 定义上已弃用
,并且可能会在将来的 CMake 版本中删除。