Skip to content

Commit

Permalink
Merge branch 'doc-CMP0054-example' into release
Browse files Browse the repository at this point in the history
  • Loading branch information
bradking committed Dec 12, 2014
2 parents ce53ef0 + f2f1c95 commit 0dd9e71
Showing 1 changed file with 31 additions and 3 deletions.
34 changes: 31 additions & 3 deletions Help/policy/CMP0054.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 0dd9e71

Please sign in to comment.