diff options
author | Craig Scott <craig.scott@crascit.com> | 2021-12-20 08:27:39 (GMT) |
---|---|---|
committer | Craig Scott <craig.scott@crascit.com> | 2021-12-20 08:27:39 (GMT) |
commit | a45e9227683f6832806c0d38d9ff9aadfa940e81 (patch) | |
tree | f74a8174949387580a3809a51fe9338a3935b867 /Help | |
parent | 6b5c836252f897a79d7293a951ab79fd1755f16b (diff) | |
download | CMake-a45e9227683f6832806c0d38d9ff9aadfa940e81.zip CMake-a45e9227683f6832806c0d38d9ff9aadfa940e81.tar.gz CMake-a45e9227683f6832806c0d38d9ff9aadfa940e81.tar.bz2 |
Help: Clarify behavior of if(DEFINED) for cache and non-cache variables
Fixes: #23023
Diffstat (limited to 'Help')
-rw-r--r-- | Help/command/if.rst | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/Help/command/if.rst b/Help/command/if.rst index 5dba13e..6957142 100644 --- a/Help/command/if.rst +++ b/Help/command/if.rst @@ -126,7 +126,16 @@ Existence Checks ``if(DEFINED <name>|CACHE{<name>}|ENV{<name>})`` True if a variable, cache variable or environment variable with given ``<name>`` is defined. The value of the variable - does not matter. Note that macro arguments are not variables. + does not matter. Note the following caveats: + + * Macro arguments are not variables. + * It is not possible to test directly whether a `<name>` is a non-cache + variable. The expression ``if(DEFINED someName)`` will evaluate to true + if either a cache or non-cache variable ``someName`` exists. In + comparison, the expression ``if(DEFINED CACHE{someName})`` will only + evaluate to true if a cache variable ``someName`` exists. Both expressions + need to be tested if you need to know whether a non-cache variable exists: + ``if(DEFINED someName AND NOT DEFINED CACHE{someName})``. .. versionadded:: 3.14 Added support for ``CACHE{<name>}`` variables. |