CMP0053¶
警告
該方針的 OLD 行為已在 CMake 版本 4.0 中移除。該方針必須透過呼叫 cmake_minimum_required() 或 cmake_policy() 設定為 NEW。
在 3.1 版被加入.
Simplify variable reference and escape sequence evaluation.
CMake 3.1 introduced a much faster implementation of evaluation of the
變數參照 and 跳脫序列 documented in the
cmake-language(7) manual. While the behavior is identical
to the legacy implementation in most cases, some corner cases were
cleaned up to simplify the behavior. Specifically:
Expansion of
@VAR@reference syntax defined by theconfigure_file()andstring(CONFIGURE)commands is no longer performed in other contexts.Literal
${VAR}reference syntax may contain only alphanumeric characters (A-Z,a-z,0-9) and the characters_,.,/,-, and+. Note that$is technically allowed in theNEWbehavior, but is invalid forOLDbehavior. This is due to an oversight during the implementation ofCMP0053and its use as a literal variable reference is discouraged for this reason. Variables with other characters in their name may still be referenced indirectly, e.g.set(varname "otherwise & disallowed $ characters") message("${${varname}}")
The setting of policy
CMP0010is not considered, so improper variable reference syntax is always an error.More characters are allowed to be escaped in variable names. Previously, only
()#" \@^were valid characters to escape. Now any non-alphanumeric, non-semicolon, non-NUL character may be escaped following theescape_identityproduction in the 跳脫序列 section of thecmake-language(7)manual.
The OLD behavior for this policy is to honor the legacy behavior for
variable references and escape sequences. The NEW behavior is to
use the simpler variable expansion and escape sequence evaluation rules.
此方針於 CMake 版本 3.1 中引入。在 CMake 版本 4.0 移除之前,它可以透過 cmake_policy() 或 cmake_minimum_required() 設定。如果未設定,CMake warned,並使用 OLD 行為。