Spec-Zone.ru › CMake

separate_arguments

Разбирает аргументы командной строки в список, разделённый точками с запятой.

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

Разбирает строку <args>, разделённую пробелами, в список элементов и сохраняет этот список в стандартном формате с разделителями-точками с запятой в <variable>.

Эта функция предназначена для разбора аргументов командной строки. Вся командная строка должна передаваться одной строкой в аргументе <args>.

Точные правила разбора зависят от операционной системы. Они задаются аргументом <mode>, который должен быть одним из следующих ключевых слов:

UNIX_COMMAND

Аргументы разделяются пробельными символами, не заключёнными в кавычки. Учитываются как пары одинарных, так и двойных кавычек. Обратная косая черта экранирует следующий буквальный символ (\" — это "); специальных escape-последовательностей нет (\n — это просто n).

WINDOWS_COMMAND

Командная строка Windows разбирается с использованием того же синтаксиса, который библиотека времени выполнения использует для формирования argv при запуске. Аргументы разделяются пробельными символами, не заключёнными в двойные кавычки. Обратные косые черты являются буквальными символами, если только за ними не следуют двойные кавычки. Подробности см. в статье MSDN Разбор аргументов командной строки C.

NATIVE_COMMAND

Добавлено в версии 3.9.

Работает в режиме WINDOWS_COMMAND, если хост-система — Windows. В противном случае работает в режиме 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> в список, разделённый точками с запятой. Все пробелы заменяются на ';'. Это упрощает формирование командных строк.

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/command/separate_arguments.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API