CMP0054 | |
------- | |
Only interpret :command:`if` arguments as variables or keywords when unquoted. | |
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(A E) | |
set(E "") | |
if("${A}" STREQUAL "") | |
message("Result is TRUE before CMake 3.1 or when CMP0054 is OLD") | |
else() | |
message("Result is FALSE in CMake 3.1 and above if CMP0054 is NEW") | |
endif() | |
After explicit expansion of variables this gives: | |
:: | |
if("E" STREQUAL "") | |
With the policy set to ``OLD`` implicit expansion reduces this semantically to: | |
:: | |
if("" STREQUAL "") | |
With the policy set to ``NEW`` the quoted arguments will not be | |
further dereferenced: | |
:: | |
if("E" STREQUAL "") | |
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. | |
.. include:: DEPRECATED.txt |