separate_arguments

解析命令行参数并将它们解析成用分号分隔的列表。

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

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

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

确切的解析规则取决于操作系统。这些规则由 <mode> 参数指定,该参数必须是以下关键字之一

UNIX_COMMAND

参数由未加引号的空白分隔。单引号和双引号对均被识别。反斜杠转义下一个文字字符(\"");没有特殊的转义(\n 就是 n)。

WINDOWS_COMMAND

Windows 命令行使用运行时库在启动时构造 argv 的相同语法进行解析。它使用未加双引号的空白分隔参数。除非出现在双引号之前,否则反斜杠均为文字。有关详情,请参阅 MSDN 文章 解析 C 命令行参数

NATIVE_COMMAND

在 3.9 版本中添加。

如果主机系统是 Windows,则按照 WINDOWS_COMMAND 模式处理。否则按照 UNIX_COMMAND 模式处理。

PROGRAM

在 3.19 版本中添加。

<args> 中的第一个项目被假定为一个可执行文件,它将在系统搜索路径中搜索或保留为一个完全限定路径。如果找不到,<variable> 将为空。否则,<variable> 是一个由 2 个元素组成的列表

  1. 该程序的绝对路径

  2. <args> 中存在的任何命令行参数作为一个字符串

例如

separate_arguments (out UNIX_COMMAND PROGRAM "cc -c main.c")
  • 列表的第一个元素:/path/to/cc

  • 列表的第二个元素:" -c main.c"

SEPARATE_ARGS

如果指定了 PROGRAM 选项的此子选项,也会拆分命令行参数并将它们存储在 <variable> 中。

例如

separate_arguments (out UNIX_COMMAND PROGRAM SEPARATE_ARGS "cc -c main.c")

out 的内容将是:/path/to/cc;-c;main.c

separate_arguments(<var>)

<var> 的值转换为一个分号分隔的列表。所有空格都将替换为“;”。这有助于生成命令行。