Spec-Zone.ru › CMake 3.17

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

UTF8 or UTF-8

Использовать кодовую страницу UTF-8. До CMake 3.11.0 для этой кодировки принималось только UTF8. В CMake 3.11.0 для согласованности с конвенцией именования RFC UTF-8 было добавлено UTF-8.

Если для одной и той же трубы указано более одного 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.17/command/execute_process.html

Spec-Zone.ru

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