Help: Be more explicit about the behavior of if(<string>)

This commit is contained in:
Craig Scott
2021-12-01 18:59:23 +11:00
parent 3a9695557d
commit 294581a443

View File

@@ -56,15 +56,24 @@ Basic Expressions
``NO``, ``FALSE``, ``N``, ``IGNORE``, ``NOTFOUND``, the empty string,
or ends in the suffix ``-NOTFOUND``. Named boolean constants are
case-insensitive. If the argument is not one of these specific
constants, it is treated as a variable or string and the following
signature is used.
constants, it is treated as a variable or string (see `Variable Expansion`_
further below) and one of the following two forms applies.
``if(<variable|string>)``
``if(<variable>)``
True if given a variable that is defined to a value that is not a false
constant. False otherwise. Note that macro arguments are not variables.
constant. False otherwise, including if the variable is undefined.
Note that macro arguments are not variables.
Environment variables also cannot be tested this way, e.g.
``if(ENV{some_var})`` will always evaluate to false.
``if(<string>)``
A quoted string always evaluates to false unless:
* The string's value is one of the true constants, or
* Policy :policy:`CMP0054` is not set to ``NEW`` and the string's value
happens to be a variable name that is affected by :policy:`CMP0054`'s
behavior.
Logic Operators
"""""""""""""""