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