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 字符都可以在《cmake-language(7)》手册的转义序列部分中,遵循escape_identity规则进行转义。
此策略的 OLD 行为是遵循变量引用和转义序列的旧有行为。 NEW 行为是采用更简单的变量展开和转义序列求值规则。
此策略在 CMake 版本 3.1 中引入。在 CMake 版本 4.0 中移除之前,可以通过 cmake_policy() 或 cmake_minimum_required() 来设置。如果未设置,CMake 会发出警告并使用 OLD 行为。