set¶
将常规、缓存或环境变量设置为给定值。请参阅 cmake-language(7) 变量 文档,了解常规变量和高速缓存条目的作用域和交互情况。
指定 <value>...
占位符的此命令的签名接收零个或多个参数。多个参数将作为一个 用分号分隔的列表,形成要设置的实际变量值。
设置常规变量¶
- set(<variable> <value>... [PARENT_SCOPE])¶
在当前函数或目录作用域中设置或取消设置
<variable>
如果给出了至少一个
<value>...
,请将变量设置为该值。如果没有给出值,取消设置该变量。这等同于
unset(<variable>)
。
如果给出了
PARENT_SCOPE
选项,将在当前作用域以上的 scope 中设置变量。每个新的目录或function()
命令创建一个新的 scope。还可以使用block()
命令创建 scope。set(PARENT_SCOPE)
将变量值设置为父目录、调用函数或包含 scope(以适用于当前情况的 scope 为准)。变量值的先前状态在当前作用域中保持不变(例如,如果之前未定义,则仍未定义,如果之前有值,则仍然是该值)。block(PROPAGATE)
和return(PROPAGATE)
命令可用作set(PARENT_SCOPE)
和unset(PARENT_SCOPE)
命令更新父作用域的替代方法。
设置缓存项¶
- set(<variable> <value>... CACHE <type> <docstring> [FORCE])¶
设置给定的缓存
<variable>
(缓存项)。由于缓存项旨在提供用户可设置的值,因此默认情况下不会覆盖现有缓存项。使用FORCE
选项来覆盖现有项。<type>
必须指定为以下类型之一BOOL
布尔值
ON/OFF
。cmake-gui(1)
提供了一个复选框。FILEPATH
磁盘上文件的路径。
cmake-gui(1)
提供了一个文件对话框。PATH
磁盘上目录的路径。
cmake-gui(1)
提供了一个文件对话框。STRING
一行文本。
cmake-gui(1)
提供了一个文本字段或下拉选择(如果设置了STRINGS
缓存项属性)。INTERNAL
一行文本。
cmake-gui(1)
不会显示内部项。可以使用它们来跨运行持久存储变量。使用此类型表示FORCE
。
必须将
<docstring>
指定为一行文本,为cmake-gui(1)
用户提供该选项的快速摘要。如果在调用之前高速缓存条目不存在或给定了
FORCE
选项,则高速缓存条目将设置为给定值。高速缓存条目有可能会在调用之前就存在,但没有设置类型(如果它是通过用户在
cmake(1)
命令行选项中通过-D<var>=<value>
选项创建的,而没有指定类型)。在这种情况下,set
命令会添加该类型。此外,如果<type>
是PATH
或FILEPATH
,而命令行中提供的<value>
是一个相对路径,则set
命令会将该路径视为相对当前工作目录,并将其转换为绝对路径。
设置环境变量¶
- set(ENV{<variable>} [<value>])¶
将
Environment Variable
设置为给定值。此后,$ENV{<variable>}
的后续调用将返回此新值。此命令仅影响当前 CMake 进程,既不影响从中调用 CMake 的进程,也不影响系统环境或后续构建或测试进程的环境。
如果在
ENV{<variable>}
之后未给出任何参数,或如果<value>
为空字符串,则此命令将清除环境变量的任何现有值。忽略
<value>
之后的参数。如果找到额外参数,则会发出作者警告。