Warning
The OLD behavior of this policy was removed
in CMake version 4.0.
This policy must be set to NEW by a call to
cmake_minimum_required() or cmake_policy().
Added in version 3.1.
Simplify variable reference and escape sequence evaluation.
CMake 3.1 introduced a much faster implementation of evaluation of the
Variable References and Escape Sequences 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 the
configure_file() and string(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 the NEW behavior, but is
invalid for OLD behavior. This is due to an oversight during the
implementation of CMP0053 and 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 CMP0010 is 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 the escape_identity
production in the Escape Sequences section of the
cmake-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.
This policy was introduced in CMake version 3.1.
Prior to removal in CMake version 4.0, it could be
set by cmake_policy() or cmake_minimum_required().
If it was not set, CMake warned, and used OLD behavior.