| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | 
							- set
 
- ---
 
- Set a normal, cache, or environment variable to a given value.
 
- See the :ref:`cmake-language(7) variables <CMake Language Variables>`
 
- documentation for the scopes and interaction of normal variables
 
- 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.
 
- Set Normal Variable
 
- ^^^^^^^^^^^^^^^^^^^
 
- .. signature::
 
-   set(<variable> <value>... [PARENT_SCOPE])
 
-   :target: normal
 
-   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`
 
-   command creates a new scope.  A scope can also be created with the
 
-   :command:`block` command. ``set(PARENT_SCOPE)`` will set the value
 
-   of a variable into the parent directory, calling function, or
 
-   encompassing scope (whichever is applicable to the case at hand).
 
-   The previous state of the variable's value stays the same in the
 
-   current scope (e.g., if it was undefined before, it is still undefined
 
-   and if it had a value, it is still that value).
 
-   The :command:`block(PROPAGATE)` and :command:`return(PROPAGATE)` commands
 
-   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
 
- ^^^^^^^^^^^^^^^
 
- .. signature::
 
-   set(<variable> <value>... CACHE <type> <docstring> [FORCE])
 
-   :target: CACHE
 
-   Sets the given cache ``<variable>`` (cache entry).  Since cache entries
 
-   are meant to provide user-settable values this does not overwrite
 
-   existing cache entries by default.  Use the ``FORCE`` option to
 
-   overwrite existing entries.
 
-   The ``<type>`` must be specified as one of:
 
-     ``BOOL``
 
-       Boolean ``ON/OFF`` value.
 
-       :manual:`cmake-gui(1)` offers a checkbox.
 
-     ``FILEPATH``
 
-       Path to a file on disk.
 
-       :manual:`cmake-gui(1)` offers a file dialog.
 
-     ``PATH``
 
-       Path to a directory on disk.
 
-       :manual:`cmake-gui(1)` offers a file dialog.
 
-     ``STRING``
 
-       A line of text.
 
-       :manual:`cmake-gui(1)` offers a text field or a drop-down selection
 
-       if the :prop_cache:`STRINGS` cache entry property is set.
 
-     ``INTERNAL``
 
-       A line of text.
 
-       :manual:`cmake-gui(1)` does not show internal entries.
 
-       They may be used to store variables persistently across runs.
 
-       Use of this type implies ``FORCE``.
 
-   The ``<docstring>`` must be specified as a line of text
 
-   providing a quick summary of the option
 
-   for presentation to :manual:`cmake-gui(1)` users.
 
-   If the cache entry does not exist prior to the call or the ``FORCE``
 
-   option is given then the cache entry will be set to the given value.
 
-   .. note::
 
-     The content of the cache variable will not be directly accessible
 
-     if a normal variable of the same name already exists
 
-     (see :ref:`rules of variable evaluation <CMake Language Variables>`).
 
-     If policy :policy:`CMP0126` is set to ``OLD``, any normal variable
 
-     binding in the current scope will be removed.
 
-   It is possible for the cache entry to exist prior to the call but
 
-   have no type set if it was created on the :manual:`cmake(1)` command
 
-   line by a user through the :option:`-D\<var\>=\<value\> <cmake -D>` option
 
-   without specifying a type.  In this case the ``set`` command will add the
 
-   type.  Furthermore, if the ``<type>`` is ``PATH`` or ``FILEPATH``
 
-   and the ``<value>`` provided on the command line is a relative path,
 
-   then the ``set`` command will treat the path as relative to the
 
-   current working directory and convert it to an absolute path.
 
- Set Environment Variable
 
- ^^^^^^^^^^^^^^^^^^^^^^^^
 
- .. signature::
 
-   set(ENV{<variable>} [<value>])
 
-   :target: ENV
 
-   Sets an :manual:`Environment Variable <cmake-env-variables(7)>`
 
-   to the given value.
 
-   Subsequent calls of ``$ENV{<variable>}`` will return this new value.
 
-   This command affects only the current CMake process, not the process
 
-   from which CMake was called, nor the system environment at large,
 
-   nor the environment of subsequent build or test processes.
 
-   If no argument is given after ``ENV{<variable>}`` or if ``<value>`` is
 
-   an empty string, then this command will clear any existing value of the
 
-   environment variable.
 
-   Arguments after ``<value>`` are ignored. If extra arguments are found,
 
-   then an author warning is issued.
 
- See Also
 
- ^^^^^^^^
 
- * :command:`unset`
 
 
  |