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> 的值轉換為以分號分隔的列表。所有空格都會被替換為 ';'。這有助於產生命令列。