cmake/Help/command/variable_watch.rst

49 lines
1.8 KiB
ReStructuredText
Raw Normal View History

2014-08-03 19:52:23 +02:00
variable_watch
--------------
Watch the CMake variable for change.
2019-11-11 23:01:05 +01:00
.. code-block:: cmake
2014-08-03 19:52:23 +02:00
2019-11-11 23:01:05 +01:00
variable_watch(<variable> [<command>])
2014-08-03 19:52:23 +02:00
2021-09-14 00:13:48 +02:00
If the specified ``<variable>`` changes and no ``<command>`` is given,
a message will be printed to inform about the change.
2019-11-11 23:01:05 +01:00
2021-09-14 00:13:48 +02:00
If ``<command>`` is given, this command will be executed instead.
2019-11-11 23:01:05 +01:00
The command will receive the following arguments:
``COMMAND(<variable> <access> <value> <current_list_file> <stack>)``
2021-09-14 00:13:48 +02:00
``<variable>``
Name of the variable being accessed.
``<access>``
One of ``READ_ACCESS``, ``UNKNOWN_READ_ACCESS``, ``MODIFIED_ACCESS``,
``UNKNOWN_MODIFIED_ACCESS``, or ``REMOVED_ACCESS``. The ``UNKNOWN_``
values are only used when the variable has never been set. Once set,
they are never used again during the same CMake run, even if the
variable is later unset.
``<value>``
The value of the variable. On a modification, this is the new
(modified) value of the variable. On removal, the value is empty.
``<current_list_file>``
Full path to the file doing the access.
``<stack>``
List of absolute paths of all files currently on the stack of file
inclusion, with the bottom-most file first and the currently
processed file (that is, ``current_list_file``) last.
Note that for some accesses such as :command:`list(APPEND)`, the watcher
is executed twice, first with a read access and then with a write one.
Also note that an :command:`if(DEFINED)` query on the variable does not
register as an access and the watcher is not executed.
Only non-cache variables can be watched using this command. Access to
cache variables is never watched. However, the existence of a cache
variable ``var`` causes accesses to the non-cache variable ``var`` to
not use the ``UNKNOWN_`` prefix, even if a non-cache variable ``var``
has never existed.