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 行为。