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 个元素的列表程序的绝对路径
以字符串形式存在于
<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>
的值转换为分号分隔的列表。所有空格都替换为“;”。这有助于生成命令行。