将普通变量、缓存变量或环境变量设置为给定值。
指定<value>...占位符期望0个或多个参数。
- 多个参数将以 分号分隔的列表形式 连接起来,形成要设置的实际变量值。
- 零参数将导致普通变量被取消设置。 请参阅
unset()命令以显式地取消设置变量。
Set Normal Variable
set(<variable> <value>... [PARENT_SCOPE])
在当前函数或目录范围中设置给定的<variable>。
如果给定了PARENT_SCOPE选项,则该变量将在当前作用域之上的作用域中设置。
每个新的目录或function()命令都会创建一个新的作用域。还可以使用block()命令创建作用域。
该命令将在父目录中、调用function或包含范围中设置一个变量的值。
变量值的前一个状态在当前范围内保持不变(例如,如果它之前是未定义的,它仍然是未定义的;如果它有一个值,它仍然是那个值)。
Set Cache Entry
set(<variable> <value>... CACHE <type> <docstring> [FORCE])
设置给定的缓存<variable>(缓存条目)。由于缓存项旨在提供用户可设置的值,因此 默认情况下不会覆盖现有的缓存项 。使用FORCE选项覆盖现有条目。
<type>必须指定为以下类型之一:
- BOOL
Boolean ON/OFF value.
- FILEPATH
Path to a file on disk.
- PATH
Path to a directory on disk.
- STRING
A line of text.
- INTERNAL
A line of text. They may be used to store variables persistently across runs. Use of this type implies FORCE.
<docstring>必须指定为一行文本,以提供向cmake-gui(1)用户展示的选项的快速摘要。
如果缓存项在调用之前不存在或者FORCE选项被给出,那么缓存项将被设置为给定的值。
如果缓存项是由用户在cmake(1)命令行上通过-D<var>=<value>选项创建的,而没有指定类型,那么缓存项可能在调用之前就存在,但没有类型设置。在这种情况下,set命令将添加类型。此外,如果<type>是PATH或FILEPATH,并且命令行上提供的<value>是相对路径,则set命令将该路径视为相对于当前工作目录的路径,并将其转换为绝对路径。
Set Environment Variable
set(ENV{<variable>} [<value>])
将环境变量设置为给定值。后续调用$ENV{<variable>}将返回这个新值。
该命令只影响当前的CMake进程,不影响调用CMake的进程,也不影响整个系统环境,也不影响后续构建或测试进程的环境。
如果ENV{<variable>}后没有给出参数,或者<value>是一个空字符串,则此命令将清除环境变量的任何现有值。
<value>后的参数将被忽略。如果发现了额外的参数,则会发出作者警告。
