separate_arguments
Разбор аргументов командной строки в список, разделённый точкой с запятой.
separate_arguments(<variable> <mode> [PROGRAM [SEPARATE_ARGS]] <args>)
Разбирает строку, разделённую пробелами <args> в список элементов и сохраняет этот список в стандартном формате, разделённом точкой с запятой, в <variable>.
Эта функция предназначена для разбора аргументов командной строки. Вся командная строка должна быть передана как одна строка в аргументе <args>.
Точные правила разбора зависят от операционной системы. Они определяются аргументом <mode>, который должен быть одним из следующих ключевых слов:
-
UNIX_COMMAND -
Аргументы разделяются необрамлёнными пробелами. Оба одинарных и двойные кавычки обрабатываются корректно. Обратный слэш экранирует следующий символ (
\"это"); специальные экранирования отсутствуют (\nэто простоn). -
WINDOWS_COMMAND -
Командная строка Windows разбирается с использованием того же синтаксиса, что и библиотека выполнения при запуске для построения argv. Она разделяет аргументы пробелами, которые не заключены в двойные кавычки. Обратные слэши являются буквальными, если они не предшествуют двойным кавычкам. Подробную информацию см. в статье MSDN Parsing C Command-Line Arguments.
-
NATIVE_COMMAND -
Новое в версии 3.9.
Действует так же, как в режиме
WINDOWS_COMMANDесли хост-система Windows. В противном случае, действует как в режиме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> в список, разделённый точкой с запятой. Все пробелы заменяются на «;». Это помогает в генерации командных строк.
© 2000–2021 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.20/command/separate_arguments.html