Spec-Zone.ru › CMake 3.29

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

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

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

execute_process выполняет команды во время конфигурирования проекта CMake, перед генерацией системы сборки. Используйте команды add_custom_target() и add_custom_command() для создания пользовательских команд, которые выполняются во время сборки.

Параметры:

COMMAND

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

CMake выполняет дочерний процесс, используя API операционной системы напрямую:

  • На платформах POSIX строка команд передаётся дочернему процессу в массиве типа argv[].
  • На платформах Windows строка команд кодируется как строка, так что дочерние процессы, использующие CommandLineToArgvW, смогут декодировать исходные аргументы.

Внутренняя оболочка не используется, поэтому операторы оболочки, такие как >, обрабатываются как обычные аргументы. (Используйте параметры INPUT_*, OUTPUT_*, и ERROR_* для перенаправления stdin, stdout и stderr.)

Для последовательного выполнения нескольких команд используйте несколько вызовов execute_process, каждый с одним аргументом COMMAND.

WORKING_DIRECTORY

Названный каталог будет установлен в качестве текущего рабочего каталога для дочерних процессов.

TIMEOUT

По истечении указанного числа секунд (допускаются дроби), все незавершенные дочерние процессы будут завершены, а RESULT_VARIABLE будет установлено в строку, упоминающую о "таймауте".

RESULT_VARIABLE

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

RESULTS_VARIABLE <variable>

Новое в версии 3.10.

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

INPUT_FILE <file>

<file> подключается к стандартному вводу первого процесса COMMAND.

OUTPUT_FILE <file>

<file> подключается к стандартному выводу последнего процесса COMMAND.

ERROR_FILE <file>

<file> подключается к стандартной трубке ошибок всех процессов COMMAND.

Новое в версии 3.3: Если одно и то же <file> указано как для OUTPUT_FILE, так и для ERROR_FILE, оно будет использоваться для обеих трубок стандартного вывода и стандартной ошибки.

OUTPUT_QUIET, ERROR_QUIET

Стандартный вывод на OUTPUT_VARIABLE или стандартная ошибка на ERROR_VARIABLE не подключены (содержимое переменной отсутствует). Параметры *_FILE и ECHO_*_VARIABLE не затрагиваются.

OUTPUT_VARIABLE, ERROR_VARIABLE

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

ECHO_OUTPUT_VARIABLE, ECHO_ERROR_VARIABLE

Новое в версии 3.18.

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

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

Примечание

Если для одной и той же трубы задано более одного параметра OUTPUT_* или ERROR_*, порядок приоритетов не определён. Если параметры OUTPUT_* или ERROR_* не заданы, вывод будет совместно использоваться соответствующими трубами процесса CMake.

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 (производителя оборудования).

UTF8 or UTF-8

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

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

COMMAND_ERROR_IS_FATAL <ANY|LAST>

Новое в версии 3.19.

Параметр, следующий за COMMAND_ERROR_IS_FATAL, определяет поведение при возникновении ошибки:

ANY Если любой из команд в списке команд завершается ошибкой, команда execute_process() завершается с ошибкой.

LAST Если последняя команда в списке команд завершается ошибкой, команда execute_process() завершается с ошибкой. Команды ранее в списке не приведут к ошибке.

© 2000–2024 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.29/command/execute_process.html

Spec-Zone.ru

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