CMP0012

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

在 CMake 版本 2.6.4 和更低版本中, if() 命令隐式取消引用与变量对应的参数,即使是那些命名为数字或布尔常量的参数,除了 01。数字和布尔常量,例如 truefalseyesnoonoffy、`` n``、notfoundignore``(所有大小写不敏感)在某些情况下被识别,但不是全部。例如,代码“if(TRUE)”可能被评估为“false”。诸如 2 之类的数字仅在布尔表达式中被识别,如 ``if(NOT 2)``(导致 ``false),而不是像 if(2) 这样的单一参数(也导致 ` 假`)。更高版本的 CMake 更喜欢按字面意思处理数字和布尔常量,因此不应将它们用作变量名。

此策略的“旧”行为是隐式取消引用以数字和布尔常量命名的变量。此策略的“新”行为是识别数字和布尔常量而不取消引用具有此类名称的变量。

此策略是在 CMake 版本 2.8.0 中引入的。 CMake 版本 |发布|当未设置策略并使用“旧”行为时发出警告。使用 cmake_policy() 命令将其显式设置为 OLDNEW

备注

策略的“旧”行为是 :manual:根据定义 <cmake-policies(7)> 已弃用,并且可能会在未来版本的 CMake 中删除。