mirror of
https://github.com/Detanup01/gbe_fork.git
synced 2024-11-28 13:44:02 +08:00
53 lines
2.2 KiB
ReStructuredText
53 lines
2.2 KiB
ReStructuredText
|
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 ``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
|