summaryrefslogtreecommitdiffstats
path: root/Help/policy
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2014-12-12 16:15:59 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2014-12-12 16:15:59 (GMT)
commitccbdac21df01b3e084bd70dd3b5b4ea7337c23d0 (patch)
treed8ca5c609f093fc702a723988ae87ee5b231d151 /Help/policy
parent17f638a4c923bdf96376e8ecfe365337906a6bcc (diff)
parentf2f1c95dd9a1e1b3dc6652ef2afb7ca74c0c986f (diff)
downloadCMake-ccbdac21df01b3e084bd70dd3b5b4ea7337c23d0.zip
CMake-ccbdac21df01b3e084bd70dd3b5b4ea7337c23d0.tar.gz
CMake-ccbdac21df01b3e084bd70dd3b5b4ea7337c23d0.tar.bz2
Merge topic 'doc-CMP0054-example'
f2f1c95d Help: Extend policy CMP0054 documentation with an example
Diffstat (limited to 'Help/policy')
-rw-r--r--Help/policy/CMP0054.rst34
1 files changed, 31 insertions, 3 deletions
diff --git a/Help/policy/CMP0054.rst b/Help/policy/CMP0054.rst
index dffee5e..39f0c40 100644
--- a/Help/policy/CMP0054.rst
+++ b/Help/policy/CMP0054.rst
@@ -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