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-Za-z0-9)和字符 _./-+。请注意,$NEW 行为中技术上是允许的,但对于 OLD 行为是无效的。这是由于在实现 CMP0053 时的疏忽,因此不建议将其用作文字变量引用。名称中包含其他字符的变量仍然可以间接引用,例如:

    set(varname "otherwise & disallowed $ characters")
    message("${${varname}}")
    
  • 不考虑策略 CMP0010 的设置,因此不正确的变量引用语法始终是错误。

  • 变量名称中允许转义更多字符。以前,只有 ()#" \@^ 是有效的可转义字符。现在,任何非字母数字、非分号、非 NUL 字符都可以根据 cmake-language(7) 手册中 转义序列 部分的 escape_identity 产生式进行转义。

此策略的 OLD 行为是遵循变量引用和转义序列的旧版行为。NEW 行为是使用更简单的变量展开和转义序列求值规则。

此策略在 CMake 3.1 版本中引入。在 CMake 4.0 版本中移除之前,它可以通过 cmake_policy()cmake_minimum_required() 设置。如果未设置,CMake 会发出警告,并使用 OLD 行为。