Spec-Zone.ru › CMake 3.24

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 операционной системы напрямую:

  • На платформах 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 аргументов. Каждый элемент будет представлять собой целое возвращаемое значение соответствующего дочернего процесса или строку, описывающую ошибочное состояние.

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.

ECHO_OUTPUT_VARIABLE, ECHO_ERROR_VARIABLE

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

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

Вывод будет дублироваться, он будет отправлен в настроенные переменные, а также в стандартный вывод или стандартную ошибку.

Это аналогично команде tee Unix.

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–2022 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.24/command/execute_process.html

Spec-Zone.ru

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