CMP0012

警告

此策略的 OLD 行为已在 CMake 4.0 版本中移除。此策略必须通过调用 cmake_minimum_required()cmake_policy() 来设置为 NEW

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 版本中引入。在 4.0 版本中移除之前,可以通过 cmake_policy()cmake_minimum_required() 来设置。如果未设置,CMake 会发出警告并使用 OLD 行为。