Spec-Zone.ru › CMake 3.26

execute_process

Выполнение одного или нескольких дочерних процессов.

execute_process(COMMAND <cmd1> [<arguments>]
                [COMMAND <cmd2> [<arguments>]]...
                [WORKING_DIRECTORY <directory>]
                [TIMEOUT <seconds>]
                [RESULT_VARIABLE <variable>]
                [RESULTS_VARIABLE <variable>]
                [OUTPUT_VARIABLE <variable>]
                [ERROR_VARIABLE <variable>]
                [INPUT_FILE <file>]
                [OUTPUT_FILE <file>]
                [ERROR_FILE <file>]
                [OUTPUT_QUIET]
                [ERROR_QUIET]
                [COMMAND_ECHO <where>]
                [OUTPUT_STRIP_TRAILING_WHITESPACE]
                [ERROR_STRIP_TRAILING_WHITESPACE]
                [ENCODING <name>]
                [ECHO_OUTPUT_VARIABLE]
                [ECHO_ERROR_VARIABLE]
                [COMMAND_ERROR_IS_FATAL <ANY|LAST>])

Выполняет заданную последовательность одной или нескольких команд.

Команды выполняются асинхронно как конвейер, при этом стандартный вывод каждого процесса передаётся в стандартный ввод следующего. Один стандартный канал ошибки используется для всех процессов.

execute_process выполняет команды во время настройки проекта CMake, до генерации системы сборки. Используйте команды add_custom_target() и add_custom_command() для создания пользовательских команд, которые выполняются во время сборки.

Параметры:

COMMAND

Строка команд дочернего процесса.

CMake выполняет дочерний процесс, используя непосредственно API операционной системы:

  • В платформах POSIX строка команд передаётся дочернему процессу в массиве типа argv[].
  • В платформах Windows строка команд кодируется как строка, таким образом, дочерние процессы, использующие CommandLineToArgvW, смогут декодировать исходные аргументы.

Промежуточная оболочка не используется, поэтому операторы оболочки, такие как >, обрабатываются как обычные аргументы. (Используйте параметры INPUT_*, OUTPUT_*, и ERROR_* для перенаправления stdin, stdout и stderr.)

Для последовательного выполнения нескольких команд используйте несколько вызовов execute_process, каждый с одним аргументом COMMAND.

WORKING_DIRECTORY

Указанный каталог будет установлен как текущий рабочий каталог дочерних процессов.

TIMEOUT

По истечении указанного количества секунд (допускаются дроби), все незавершенные дочерние процессы будут завершены, и RESULT_VARIABLE будет установлено со строкой, упоминающей "таймаут".

RESULT_VARIABLE

Переменная будет установлена с результатом последнего дочернего процесса. Это будет целочисленное возвращаемое значение последнего дочернего процесса или строка, описывающая ошибку.

RESULTS_VARIABLE <variable>

Новая в версии 3.10.

Переменная будет установлена со списком результатов всех процессов, разделённых точкой с запятой, в порядке указанных аргументов COMMAND. Каждая запись будет целочисленным возвращаемым значением соответствующего дочернего процесса или строкой, описывающей ошибку.

INPUT_FILE <file>

<file> подключен к стандартному вводу (stdin) первого COMMAND процесса.

OUTPUT_FILE <file>

<file> подключен к стандартному выводу (stdout) последнего COMMAND процесса.

ERROR_FILE <file>

<file> подключен к стандартному потоку ошибок (stderr) всех COMMAND процессов.

Новая в версии 3.3: Если одно и то же <file> указано для OUTPUT_FILE и ERROR_FILE, оно будет использоваться для обоих каналов стандартного вывода и стандартной ошибки.

OUTPUT_QUIET, ERROR_QUIET

Стандартный вывод на OUTPUT_VARIABLE или стандартная ошибка на ERROR_VARIABLE не подключены (содержимое переменной отсутствует). Параметры *_FILE и ECHO_*_VARIABLE не затронуты.

OUTPUT_VARIABLE, ERROR_VARIABLE

Именованная переменная будет установлена с содержимым стандартного вывода и стандартного потока ошибок соответственно. Если одна и та же переменная указана для обоих потоков, их выходные данные будут объединены в порядке их получения.

ECHO_OUTPUT_VARIABLE, ECHO_ERROR_VARIABLE

Новая в версии 3.18.

Стандартный вывод или стандартная ошибка не будут перенаправлены исключительно в указанные переменные.

Вывод будет дублирован в указанные переменные и также в стандартный вывод или стандартную ошибку, аналогично команде tee Unix.

Примечание

Если для одного и того же канала задано более одного параметра OUTPUT_* или ERROR_*, порядок приоритетов не определён. Если не указано ни одного параметра OUTPUT_* или ERROR_*, вывод будет совместно использоваться с соответствующими каналами процесса CMake.

COMMAND_ECHO <where>

Новая в версии 3.15.

Выполняемая команда будет выведена в <where> с <where>, установленным на одно из значений STDERR, STDOUT или NONE. См. переменную CMAKE_EXECUTE_PROCESS_COMMAND_ECHO для получения информации о способе управления стандартным поведением при отсутствии этого параметра.

ENCODING <name>

Новая в версии 3.8.

В Windows кодировка, используемая для декодирования вывода процесса. Игнорируется в других платформах. Допустимые имена кодировок:

NONE

Декодирование не выполняется. Предполагается, что вывод процесса закодирован так же, как внутренняя кодировка CMake (UTF-8). Это значение по умолчанию.

AUTO

Используется кодовая страница активной консоли или, если она недоступна, ANSI.

ANSI

Используется кодовая страница ANSI.

OEM

Используется кодовая страница изготовителя оборудования (OEM).

UTF8 or UTF-8

Используется кодовая страница UTF-8.

Новая в версии 3.11: Поддерживается написание UTF-8 для согласованности с конвенцией именования RFC UTF-8 UTF-8 RFC.

COMMAND_ERROR_IS_FATAL <ANY|LAST>

Новая в версии 3.19.

Параметр, следующий за COMMAND_ERROR_IS_FATAL, определяет поведение при возникновении ошибки:

ANY Если любая из команд в списке команд завершается ошибкой, команда execute_process() завершается с ошибкой.

LAST Если последняя команда в списке команд завершается ошибкой, команда execute_process() завершается с ошибкой. Команды, расположенные ранее в списке, не приведут к ошибке.

© 2000–2023 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.26/command/execute_process.html

Spec-Zone.ru

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