Spec-Zone.ru › CMake 3.20

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.20/command/execute_process.html

Spec-Zone.ru

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