Merge branch 'doc-CMP0054-example' into release

This commit is contained in:
Brad King 2014-12-12 11:13:21 -05:00
commit 0dd9e7173d
1 changed files with 31 additions and 3 deletions

View File

@ -3,15 +3,43 @@ CMP0054
Only interpret :command:`if` arguments as variables or keywords when unquoted. Only interpret :command:`if` arguments as variables or keywords when unquoted.
CMake 3.1 and above no longer dereference variables or interpret keywords CMake 3.1 and above no longer implicitly dereference variables or
in an :command:`if` command argument when it is a :ref:`Quoted Argument` interpret keywords in an :command:`if` command argument when
or a :ref:`Bracket Argument`. it is a :ref:`Quoted Argument` or a :ref:`Bracket Argument`.
The ``OLD`` behavior for this policy is to dereference variables and The ``OLD`` behavior for this policy is to dereference variables and
interpret keywords even if they are quoted or bracketed. interpret keywords even if they are quoted or bracketed.
The ``NEW`` behavior is to not dereference variables or interpret keywords The ``NEW`` behavior is to not dereference variables or interpret keywords
that have been quoted or bracketed. 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. This policy was introduced in CMake version 3.1.
CMake version |release| warns when the policy is not set and uses CMake version |release| warns when the policy is not set and uses
``OLD`` behavior. Use the :command:`cmake_policy` command to set ``OLD`` behavior. Use the :command:`cmake_policy` command to set