mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-06 05:40:54 -06:00
Help: Clarify behavior of if(DEFINED) for cache and non-cache variables
Fixes: #23023
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user