Help: Clarify that set(VAR) unsets VAR
Also call out possible exposure of an existing cache entry of the same
name, as we have for the `unset` command since commit 1a0f1a25a4
(Help:
Clarify the unset command, 2018-08-17, v3.13.0-rc1~199^2).
Issue: #24633
This commit is contained in:
parent
3a9613d28f
commit
512f64289a
9
Help/command/UNSET_NOTE.txt
Normal file
9
Help/command/UNSET_NOTE.txt
Normal file
@ -0,0 +1,9 @@
|
||||
.. note::
|
||||
|
||||
When evaluating :ref:`Variable References` of the form ``${VAR}``, CMake
|
||||
first searches for a normal variable with that name. If no such normal
|
||||
variable exists, CMake will then search for a cache entry with that name.
|
||||
Because of this, **unsetting a normal variable can expose a cache variable
|
||||
that was previously hidden**. To force a variable reference of the form
|
||||
``${VAR}`` to return an empty string, use ``set(<variable> "")``, which
|
||||
clears the normal variable but leaves it defined.
|
@ -8,9 +8,8 @@ and cache entries.
|
||||
|
||||
Signatures of this command that specify a ``<value>...`` placeholder
|
||||
expect zero or more arguments. Multiple arguments will be joined as
|
||||
a :ref:`semicolon-separated list <CMake Language Lists>` to form the actual variable
|
||||
value to be set. Zero arguments will cause normal variables to be
|
||||
unset. See the :command:`unset` command to unset variables explicitly.
|
||||
a :ref:`semicolon-separated list <CMake Language Lists>` to form the
|
||||
actual variable value to be set.
|
||||
|
||||
Set Normal Variable
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
@ -19,7 +18,11 @@ Set Normal Variable
|
||||
set(<variable> <value>... [PARENT_SCOPE])
|
||||
:target: normal
|
||||
|
||||
Sets the given ``<variable>`` in the current function or directory scope.
|
||||
Set or unset ``<variable>`` in the current function or directory scope:
|
||||
|
||||
* If at least one ``<value>...`` is given, set the variable to that value.
|
||||
* If no value is given, unset the variable. This is equivalent to
|
||||
:command:`unset(<variable>) <unset>`.
|
||||
|
||||
If the ``PARENT_SCOPE`` option is given the variable will be set in
|
||||
the scope above the current scope. Each new directory or :command:`function`
|
||||
@ -34,6 +37,8 @@ Set Normal Variable
|
||||
can be used as an alternate method to the :command:`set(PARENT_SCOPE)`
|
||||
and :command:`unset(PARENT_SCOPE)` commands to update the parent scope.
|
||||
|
||||
.. include:: UNSET_NOTE.txt
|
||||
|
||||
Set Cache Entry
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
|
@ -12,19 +12,14 @@ Unset Normal Variable or Cache Entry
|
||||
|
||||
Removes a normal variable from the current scope, causing it
|
||||
to become undefined. If ``CACHE`` is present, then a cache variable
|
||||
is removed instead of a normal variable. Note that when evaluating
|
||||
:ref:`Variable References` of the form ``${VAR}``, CMake first searches
|
||||
for a normal variable with that name. If no such normal variable exists,
|
||||
CMake will then search for a cache entry with that name. Because of this
|
||||
unsetting a normal variable can expose a cache variable that was previously
|
||||
hidden. To force a variable reference of the form ``${VAR}`` to return an
|
||||
empty string, use ``set(<variable> "")``, which clears the normal variable
|
||||
but leaves it defined.
|
||||
is removed instead of a normal variable.
|
||||
|
||||
If ``PARENT_SCOPE`` is present then the variable is removed from the scope
|
||||
above the current scope. See the same option in the :command:`set` command
|
||||
for further details.
|
||||
|
||||
.. include:: UNSET_NOTE.txt
|
||||
|
||||
Unset Environment Variable
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user