|
|
@@ -3,15 +3,43 @@ CMP0054
|
|
|
|
|
|
Only interpret :command:`if` arguments as variables or keywords when unquoted.
|
|
|
|
|
|
-CMake 3.1 and above no longer dereference variables or interpret keywords
|
|
|
-in an :command:`if` command argument when it is a :ref:`Quoted Argument`
|
|
|
-or a :ref:`Bracket Argument`.
|
|
|
+CMake 3.1 and above no longer implicitly dereference variables or
|
|
|
+interpret keywords in an :command:`if` command argument when
|
|
|
+it is a :ref:`Quoted Argument` or a :ref:`Bracket Argument`.
|
|
|
|
|
|
The ``OLD`` behavior for this policy is to dereference variables and
|
|
|
interpret keywords even if they are quoted or bracketed.
|
|
|
The ``NEW`` behavior is to not dereference variables or interpret keywords
|
|
|
that have been quoted or bracketed.
|
|
|
|
|
|
+Given the following partial example:
|
|
|
+
|
|
|
+::
|
|
|
+
|
|
|
+ set(MONKEY 1)
|
|
|
+ set(ANIMAL MONKEY)
|
|
|
+
|
|
|
+ if("${ANIMAL}" STREQUAL "MONKEY")
|
|
|
+
|
|
|
+After explicit expansion of variables this gives:
|
|
|
+
|
|
|
+::
|
|
|
+
|
|
|
+ if("MONKEY" STREQUAL "MONKEY")
|
|
|
+
|
|
|
+With the policy set to ``OLD`` implicit expansion reduces this semantically to:
|
|
|
+
|
|
|
+::
|
|
|
+
|
|
|
+ if("1" STREQUAL "1")
|
|
|
+
|
|
|
+With the policy set to ``NEW`` the quoted arguments will not be
|
|
|
+further dereferenced:
|
|
|
+
|
|
|
+::
|
|
|
+
|
|
|
+ if("MONKEY" STREQUAL "MONKEY")
|
|
|
+
|
|
|
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
|