summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Scott <craig.scott@crascit.com>2021-12-01 07:59:23 (GMT)
committerCraig Scott <craig.scott@crascit.com>2021-12-01 07:59:23 (GMT)
commit294581a4436714367093052151b501d64f6c47f3 (patch)
treec0ef8999437075cb0d7700db220aa70ad2eeac09
parent3a9695557dc68e6520159ec69e21483a1311b420 (diff)
downloadCMake-294581a4436714367093052151b501d64f6c47f3.zip
CMake-294581a4436714367093052151b501d64f6c47f3.tar.gz
CMake-294581a4436714367093052151b501d64f6c47f3.tar.bz2
Help: Be more explicit about the behavior of if(<string>)
-rw-r--r--Help/command/if.rst17
1 files changed, 13 insertions, 4 deletions
diff --git a/Help/command/if.rst b/Help/command/if.rst
index b4b4897..5dba13e 100644
--- a/Help/command/if.rst
+++ b/Help/command/if.rst
@@ -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
"""""""""""""""