separate_arguments¶
将命令行参数解析为分号分隔的列表。
separate_arguments(<variable> <mode> [PROGRAM [SEPARATE_ARGS]] <args>)
将一个空格分隔的字符串 <args> 解析为一个项的列表,并将此列表以分号分隔的标准形式存储在 <variable> 中。
此函数用于解析命令行参数。整个命令行必须作为单个字符串传递给参数 <args>。
确切的解析规则取决于操作系统。它们由参数 <mode> 指定,该参数必须是以下关键字之一:
UNIX_COMMAND参数由未引用的空格分隔。单引号和双引号对都得到尊重。反斜杠会转义下一个字面字符(
\"是");没有特殊的转义(\n只是n)。WINDOWS_COMMANDWindows 命令行使用运行时库在启动时构造 argv 所使用的相同语法进行解析。它使用不被双引号引起来的空格来分隔参数。反斜杠是字面字符,除非它们出现在双引号之前。有关详细信息,请参阅 MSDN 文章 Parsing C Command-Line Arguments。
NATIVE_COMMAND版本 3.9 中添加。
如果主机系统是 Windows,则行为与
WINDOWS_COMMAND模式相同。否则,行为与UNIX_COMMAND模式相同。PROGRAM3.19 版本新增。
假定
<args>中的第一个项是可执行文件,将在系统搜索路径中进行搜索,或者保留为完整路径。如果未找到,<variable>将为空。否则,<variable>是一个包含 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> 的值转换为分号分隔的列表。所有空格都将替换为 ';'。这有助于生成命令行。