Spec-Zone.ru › CMake 3.16

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

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

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

Параметры:

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.

UTF8 or UTF-8

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

Если для одной и той же трубы указано более одного параметра 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.16/command/execute_process.html

Spec-Zone.ru

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