|
|
|
CMP0053
|
|
|
|
-------
|
|
|
|
|
|
|
|
.. versionadded:: 3.1
|
|
|
|
|
|
|
|
Simplify variable reference and escape sequence evaluation.
|
|
|
|
|
|
|
|
CMake 3.1 introduced a much faster implementation of evaluation of the
|
|
|
|
:ref:`Variable References` and :ref:`Escape Sequences` documented in the
|
|
|
|
:manual:`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
|
|
|
|
:command:`configure_file` and :command:`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 :policy:`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.
|
|
|
|
|
|
|
|
.. code-block:: cmake
|
|
|
|
|
|
|
|
set(varname "otherwise & disallowed $ characters")
|
|
|
|
message("${${varname}}")
|
|
|
|
|
|
|
|
* The setting of policy :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 :ref:`Escape Sequences` section of the
|
|
|
|
:manual:`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.
|
|
|
|
CMake version |release| warns when the policy is not set and uses
|
|
|
|
``OLD`` behavior. Use the :command:`cmake_policy` command to set
|
|
|
|
it to ``OLD`` or ``NEW`` explicitly.
|
|
|
|
|
|
|
|
.. include:: DEPRECATED.txt
|