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 中移除。