CMP0053¶
在版本 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
的设置,因此不正确的变量引用语法始终是一个错误。可以在变量名中转义更多字符。以前,只有
()#" \@^
是有效的转义字符。现在,任何非字母数字、非分号、非空字符都可以按照 转义序列 部分在cmake-language(7)
手册中escape_identity
生成中进行转义。
此策略的 OLD
行为是遵守变量引用的遗留行为和转义序列。 NEW
行为是使用更简单的变量扩展和转义序列求值规则。
此策略在 CMake 版本 3.1 中引入。可以通过 cmake_policy()
或 cmake_minimum_required()
设置。如果未设置,CMake 会发出警告并使用 OLD
行为。
注意
策略的 OLD
行为 根据 定义 已 弃用
,并在未来版本的 CMake 中移除。