Spec-Zone.ru › CMake 3.22

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

UTF8 or UTF-8

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

Новое в версии 3.11: Поддерживается написание UTF-8 для согласованности с конвенцией именования RFC UTF-8 UTF-8 RFC.

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

Spec-Zone.ru

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