Set a normal, cache, or environment variable to a given value. See the cmake-language(7) 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 ;-list to form the actual variable value to be set. Zero arguments will cause normal variables to be unset. See the unset()
command to unset variables explicitly.
set(<variable> <value>... [PARENT_SCOPE])
Set the given <variable>
in the current function or directory scope.
If the PARENT_SCOPE
option is given the variable will be set in the scope above the current scope. Each new directory or function creates a new scope. This command will set the value of a variable into the parent directory or calling function (whichever is applicable to the case at hand).
set(<variable> <value>... CACHE <type> <docstring> [FORCE])
Set 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
ON/OFF
value. cmake-gui(1)
offers a checkbox.FILEPATH
cmake-gui(1)
offers a file dialog.PATH
cmake-gui(1)
offers a file dialog.STRING
cmake-gui(1)
offers a text field or a drop-down selection if the STRINGS
cache entry property is set.INTERNAL
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 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. Furthermore, any normal variable binding in the current scope will be removed to expose the newly cached value to any immediately following evaluation.
It is possible for the cache entry to exist prior to the call but have no type set if it was created on the cmake(1)
command line by a user through the -D<var>=<value>
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(ENV{<variable>} <value>...)
Set the current process environment <variable>
to the given value.
© 2000–2016 Kitware, Inc.
© 2000–2011 Insight Software Consortium
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.5/command/set.html