cmake:cmake-commands(7)

  • Post author:
  • Post category:其他

脚本命令

这些命令总是可用的。

separate_arguments

将命令行参数解析为分号分隔的列表。

separate_arguments(<variable> <mode> [PROGRAM [SEPARATE_ARGS]] <args>)

将空格分隔的字符串< args>解析为项目列表,并将此列表以分号分隔的标准形式存储在< variable>中。

此函数用于解析命令行参数。整个命令行必须作为参数< args>中的一个字符串传递。

具体的解析规则取决于操作系统。它们由< mode>参数指定,该参数必须是以下关键字之一:

  • UNIX_COMMAND
    • 参数之间用不带引号的空格隔开。
    • 同时考虑单引号和双引号对。
    • 反斜杠转义下一个文字字符(“就是”);没有特殊的转义符(\n只是n)。
  • WINDOWS_COMMAND

variable_watch

观察CMake变量的变化。

variable_watch(<variable> [<command>])
  • 如果指定的< variable>发生变化,并且没有给出< command>,则会打印一条消息来通知该变化。
  • 如果给出< command>,则改为执行此命令。命令将接收以下参数:COMMAND(<variable> <access> <value> <current_list_file> <stack>)
    • < variable>:正在访问的变量的名称。
    • < access>
      • 值为READ_ACCESS, UNKNOWN_READ_ACCESS, MODIFIED_ACCESS, UNKNOWN_MODIFIED_ACCESS, 或REMOVED_ACCESS之一
      • UNKNOWN_ 仅在从未设置变量时使用。一旦设置,在同一个CMake运行期间,它们就不会再被使用,即使变量后来被取消设置。
    • < value>: 变量的值。
      • 在修改时,这是变量的新(修改过的)值。
      • 删除时,该值为空
    • < current_list_file>:进行访问的文件的完整路径。
    • < stack>:当前在文件包含堆栈上的所有文件的绝对路径列表

注意,对于一些访问,比如list(APPEND),观察程序执行两次,首先是读访问,然后是写访问。还要注意的是,对变量的if(DEFINED)查询不会注册为访问,并且不会执行观察程序。

使用此命令只能监视非缓存变量。从不监视对缓存变量的访问。但是,缓存变量var的存在会导致对非缓存变量var的访问不使用未知前缀,即使非缓存变量var从未存在过。

cmake_path

版本3.20中的新功能。

此命令用于操纵路径。只处理路径的语法方面,不与任何底层文件系统进行任何类型的交互。路径可能表示不存在的路径,甚至是当前文件系统或平台上不允许存在的路径。有关与文件系统交互的操作,请参阅file()命令。