cmake:set

1060 篇文章 296 订阅

将普通变量、缓存变量或环境变量设置为给定值。关于普通变量和缓存项的作用域和交互,请参见cmake-language(7) variables文档。

设置普通变量

set(<variable> <value>... [PARENT_SCOPE])

在当前函数或目录范围内设置给定的< variable >。

如果给定PARENT_SCOPE选项,变量将被设置在当前作用域之上。每个新的目录或函数都会创建一个新的作用域。这个命令将一个变量的值设置到父目录或调用函数中(以适用于当前的情况为准)。变量值的前一个状态在当前范围内保持不变(例如,如果它之前是未定义的,它仍然是未定义的,如果它有一个值,它仍然是那个值)。

设置缓存项

set(<variable> <value>... CACHE <type> <docstring> [FORCE])

设置给定的缓存< variable >(缓存项)。由于缓存项旨在提供用户可设置的值,因此默认情况下不会覆盖现有缓存项。使用FORCE选项覆盖现有条目。

< type>必须指定为以下之一:

  • BOOL:布尔ON/OFF值。cmake gui(1)提供一个复选框。
  • FILEPATH:磁盘上文件的路径。cmakegui(1)提供了一个文件对话框。
  • PATH:磁盘上目录的路径。cmakegui(1)提供了一个文件对话框。
  • STRING:一行文字。如果设置了字符串缓存条目属性,cmake gui(1)提供文本字段或下拉选择。
  • INTERNAL:一行文字。cmake gui(1)不显示内部条目。它们可以用于在运行之间持久地存储变量。使用这种类型意味着力量。

< docstring >必须指定为一行文本,为cmake gui(1)用户提供选项的快速摘要。

如果在调用之前缓存项不存在或给定了FORCE选项,则缓存项将设置为给定值。

注意:如果已经存在同名的普通变量,则无法直接访问缓存变量的内容(请参见变量求值规则)。如果策略CMP0126设置为OLD,则将删除当前作用域中的所有常规变量绑定。

如果缓存条目是在cmake(1)命令行上由用户通过-D< var>=< value >选项创建的,而没有指定类型,那么缓存条目可能在调用之前就存在,但没有设置类型。在这种情况下,set命令将添加类型。此外,如果是PATH或FILEPATH,并且命令行上提供的是相对路径,那么set命令将把该路径视为相对于当前工作目录的路径,并将其转换为绝对路径。

设置环境变量

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值