CMP0053¶
警告
此策略的 OLD
行为已在 CMake 4.0 版本中移除。此策略必须通过调用 cmake_minimum_required()
或 cmake_policy()
设置为 NEW
。
在版本 3.1 中添加。
简化变量引用和转义序列的求值。
CMake 3.1 引入了一个更快的实现,用于求值在 cmake-language(7)
手册中记录的 变量引用 和 转义序列。虽然在大多数情况下,此行为与旧实现相同,但清理了一些边缘情况以简化此行为。具体来说:
由
configure_file()
和string(CONFIGURE)
命令定义的@VAR@
引用语法的扩展不再在其他上下文中执行。字面
${VAR}
引用语法可能只包含字母数字字符 (A-Z
、a-z
、0-9
) 和字符_
、.
、/
、-
及+
。请注意,$
在技术上在NEW
行为中是允许的,但在OLD
行为中是无效的。这是由于在CMP0053
的实现过程中的一个疏忽,因此不鼓励将其用作字面变量引用。名称中包含其他字符的变量仍然可以间接引用,例如:set(varname "otherwise & disallowed $ characters") message("${${varname}}")
不考虑策略
CMP0010
的设置,因此不正确的变量引用语法始终是一个错误。变量名中允许转义更多字符。以前,只有
()#" \@^
是有效的转义字符。现在,任何非字母数字、非分号、非 NUL 字符都可以按照 转义序列 部分中的escape_identity
产生式进行转义,该部分位于cmake-language(7)
手册中。
此策略的 OLD
行为是遵循变量引用和转义序列的旧行为。NEW
行为是使用更简单的变量展开和转义序列求值规则。
此策略在 CMake 3.1 版本中引入。在 CMake 4.0 版本中移除之前,可以通过 cmake_policy()
或 cmake_minimum_required()
设置它。如果未设置,CMake 会发出警告,并使用 OLD
行为。