| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- CMP0053
- -------
- .. |REMOVED_IN_CMAKE_VERSION| replace:: 4.0
- .. include:: include/REMOVED_PROLOGUE.rst
- .. 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.
- .. |INTRODUCED_IN_CMAKE_VERSION| replace:: 3.1
- .. |WARNED_OR_DID_NOT_WARN| replace:: warned
- .. include:: include/REMOVED_EPILOGUE.rst
|