CMP0012

if() 识别数字和布尔常量。

在 CMake 2.6.4 和更低版本中,if() 命令会隐式解除对与变量相对应的参数的引用,即使变量名称类似于数字或布尔常量,但 01 除外。数字和布尔常量(如 truefalseyesnoonoffynnotfoundignore(均不区分大小写))在某些情况下会被识别,但在其他情况下不会。例如,代码 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 版本中删除。