|
|
@@ -0,0 +1,44 @@
|
|
|
+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.
|