Spec-Zone.ru › CMake 3.21

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>])

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

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

Параметры:

COMMAND

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

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

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

WORKING_DIRECTORY

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

TIMEOUT

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

RESULT_VARIABLE

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

RESULTS_VARIABLE <variable>

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

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

OUTPUT_VARIABLE, ERROR_VARIABLE

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

INPUT_FILE, OUTPUT_FILE, ERROR_FILE

Названный файл будет присоединён к стандартному вводу первого процесса, стандартному выводу последнего процесса или стандартной ошибке всех процессов соответственно.

Добавлена в версии 3.3: Если один и тот же файл указан для вывода и ошибки, он будет использоваться для обоих.

OUTPUT_QUIET, ERROR_QUIET

Результаты стандартного вывода или стандартной ошибки будут проигнорированы.

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.

ECHO_OUTPUT_VARIABLE, ECHO_ERROR_VARIABLE

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

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

Вывод будет дублироваться, он будет отправлен в конфигурируемые переменные и также в стандартный вывод или стандартную ошибку.

Это аналогично команде Unix tee.

COMMAND_ERROR_IS_FATAL <ANY|LAST>

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

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

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

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

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

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

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

Spec-Zone.ru

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