Spec-Zone.ru › CMake 3.19

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>

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

OUTPUT_VARIABLE, ERROR_VARIABLE

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

INPUT_FILE, OUTPUT_FILE, ERROR_FILE

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

OUTPUT_QUIET, ERROR_QUIET

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

COMMAND_ECHO <where>

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

ENCODING <name>

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

NONE

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

AUTO

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

ANSI

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

OEM

Использовать кодовую страницу OEM (Original Equipment Manufacturer).

UTF8 or UTF-8

Использовать кодовую страницу UTF-8. До CMake 3.11.0 для этой кодировки принималось только UTF8. В CMake 3.11.0 было добавлено UTF-8 для соответствия соглашению об именовании UTF-8 RFC.

ECHO_OUTPUT_VARIABLE, ECHO_ERROR_VARIABLE

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

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

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

COMMAND_ERROR_IS_FATAL <ANY|LAST>

Параметр, следующий за 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–2020 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.19/command/execute_process.html

Spec-Zone.ru

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