CMP0054¶
警告
此策略的 OLD
行为已在 CMake 4.0 版本中移除。此策略必须通过调用 cmake_minimum_required()
或 cmake_policy()
设置为 NEW
。
在版本 3.1 中添加。
仅当未加引号时,才将 if()
参数解释为变量或关键字。
当 if()
命令参数是 带引号的参数 或 括号参数 时,CMake 3.1 及更高版本不再隐式地解引用变量或解释关键字。
此策略的 OLD
行为是即使在参数被引号或括号括起来的情况下,也解引用变量并解释关键字。NEW
行为是不解引用被引号或括号括起来的变量或解释关键字。
给定以下部分示例
set(A E)
set(E "")
if("${A}" STREQUAL "")
message("Result is TRUE before CMake 3.1 or when CMP0054 is OLD")
else()
message("Result is FALSE in CMake 3.1 and above if CMP0054 is NEW")
endif()
在显式展开变量后,得到
if("E" STREQUAL "")
当策略设置为 OLD
时,隐式展开在语义上将其简化为
if("" STREQUAL "")
当策略设置为 NEW
时,带引号的参数将不再被进一步解引用
if("E" STREQUAL "")
此策略在 CMake 3.1 版本中引入。在 CMake 4.0 版本中移除之前,可以通过 cmake_policy()
或 cmake_minimum_required()
设置。如果未设置,CMake 会发出警告,并使用 OLD
行为。