12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- CMP0053
- -------
- 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 ``+``.
- 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
|