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 的设置,所以不正确的变量引用语法总是错误的。

  • 允许在变量名中转义更多字符。以前,只有 ()#" \@^ 是要转义的有效字符。现在任何非字母数字、非分号、非 NUL 字符都可以在 :ref 中的 escape_identity 生成之后转义: cmake-language(7) 手册的`Escape Sequences` 部分。

此政策的“旧”行为是为了尊重变量引用和转义序列的旧行为。 NEW 行为是使用更简单的变量扩展和转义序列评估规则。

此策略是在 CMake 版本 3.1 中引入的。 CMake 版本 |发布|当未设置策略并使用“旧”行为时发出警告。使用 cmake_policy() 命令将其显式设置为 OLDNEW

备注

策略的“旧”行为是 :manual:根据定义 <cmake-policies(7)> 已弃用,并且可能会在未来版本的 CMake 中删除。