单独的参数

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

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

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

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

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

UNIX_COMMAND

参数由未加引号的空格分隔。单引号和双引号对都受到尊重。反斜杠转义下一个文字字符(\"");没有特殊的转义符(\n 只是 n)。

WINDOWS_COMMAND

使用运行时库在启动时用于构造 argv 的相同语法来解析 Windows 命令行。它用没有双引号的空格分隔参数。反斜杠是文字,除非它们在双引号之前。有关详细信息,请参阅 MSDN 文章“解析 C 命令行参数”。

NATIVE_COMMAND

在 3.9 版本加入.

如果主机系统是 Windows,则按照“WINDOWS_COMMAND”模式进行。否则按照 UNIX_COMMAND 模式进行。

程序

在 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> 的值转换为以分号分隔的列表。所有空格都替换为“;”。这有助于生成命令行。