CMake 之 set

将普通变量、缓存变量或环境变量设置为给定值。

指定<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>PATHFILEPATH,并且命令行上提供的<value>是相对路径,则set命令将该路径视为相对于当前工作目录的路径,并将其转换为绝对路径。

Set Environment Variable

  
set(ENV{<variable>} [<value>])  

将环境变量设置为给定值。后续调用$ENV{<variable>}将返回这个新值。

该命令只影响当前的CMake进程,不影响调用CMake的进程,也不影响整个系统环境,也不影响后续构建或测试进程的环境。

如果ENV{<variable>}后没有给出参数,或者<value>是一个空字符串,则此命令将清除环境变量的任何现有值。

<value>后的参数将被忽略。如果发现了额外的参数,则会发出作者警告。

参考文献

picture.image

0
0
0
0
评论
未登录
暂无评论