Spec-Zone.ru › CMake

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

Это было значением по умолчанию в CMake 3.14 и более ранних версиях.

AUTO

Использовать текущую кодовую страницу активной консоли или, если она недоступна, ANSI.

Это было значением по умолчанию в CMake 3.15 по 3.30.

ANSI

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

OEM

Использовать кодовую страницу производителя оборудования (OEM).

UTF-8

Добавлена в версии 3.11.

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

Это значение по умолчанию. См. политику CMP0176.

UTF8

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

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

Spec-Zone.ru

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