Spec-Zone.ru › CMake 3.18

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

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

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 было добавлено для согласованности с соглашением об именах RFC UTF-8.

ECHO_OUTPUT_VARIABLE, ECHO_ERROR_VARIABLE

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

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

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

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

Spec-Zone.ru

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