Spec-Zone.ru › CMake 3.15

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 (Original Equipment Manufacturer).

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

Spec-Zone.ru

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