CMP0012¶
警告
此策略的 OLD
行为已在 CMake 4.0 版本中移除。此策略必须通过调用 cmake_minimum_required()
或 cmake_policy()
设置为 NEW
。
if()
识别数字和布尔常量。
在 CMake 2.6.4 及更低版本中,if()
命令会隐式地解引用对应于变量的参数,即使是那些命名为数字或布尔常量的变量,除了 0
和 1
之外。数字和布尔常量,例如 true
、false
、yes
、no
、on
、off
、y
、n
、notfound
、ignore
(所有大小写不敏感)在某些情况下被识别,但并非所有情况都如此。例如,代码 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
行为。