| 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(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 |
| it to ``OLD`` or ``NEW`` explicitly. |