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]
[OUTPUT_STRIP_TRAILING_WHITESPACE]
[ERROR_STRIP_TRAILING_WHITESPACE]
[ENCODING <name>])
Выполняет заданную последовательность одного или нескольких команд параллельно, при этом стандартный вывод каждого процесса передаётся в стандартный ввод следующего. Единая труба стандартной ошибки используется для всех процессов.
Параметры:
-
COMMAND -
Командная строка дочернего процесса.
CMake выполняет дочерний процесс, используя API операционной системы напрямую. Все аргументы передаются ДОСЛОВНО дочернему процессу. Промежуточный shell не используется, поэтому операторы shell, такие как
>обрабатываются как обычные аргументы. (Используйте параметрыINPUT_*,OUTPUT_*, иERROR_*для перенаправления stdin, stdout и stderr.)Если требуется последовательное выполнение нескольких команд, используйте несколько вызовов
execute_process()с одним аргументомCOMMAND. -
WORKING_DIRECTORY -
Указанный каталог будет установлен как текущий рабочий каталог дочерних процессов.
-
TIMEOUT -
Дочерние процессы будут завершены, если они не завершатся в течение указанного количества секунд (допускаются дроби).
-
RESULT_VARIABLE -
Переменная будет установлена в значение результата последнего дочернего процесса. Это будет целочисленный код возврата последнего дочернего процесса или строка, описывающая ошибку.
-
RESULTS_VARIABLE <variable> -
Переменная будет установлена в значение результатов всех процессов в виде списка, разделённого точкой с запятой, в порядке предоставленных аргументов
COMMAND. Каждая запись будет содержать целочисленный код возврата соответствующего дочернего процесса или строку, описывающую ошибку. -
OUTPUT_VARIABLE, ERROR_VARIABLE -
Указанная переменная будет установлена с содержимым труб стандартного вывода и стандартной ошибки соответственно. Если для обеих труб указана одна и та же переменная, их вывод будет объединён в порядке, в котором он был получен.
-
INPUT_FILE, OUTPUT_FILE, ERROR_FILE -
Указанный файл будет подключён к стандартному вводу первого процесса, стандартному выводу последнего процесса или стандартной ошибке всех процессов соответственно. Если один и тот же файл указан для вывода и ошибки, он будет использоваться для обоих.
-
OUTPUT_QUIET, ERROR_QUIET -
Результаты стандартного вывода или стандартной ошибки будут тихо игнорироваться.
-
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.0UTF-8было добавлено для обеспечения соответствия соглашению об именовании RFC для UTF-8 UTF-8 RFC.
-
Если для одной и той же трубы задано более одного параметра 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.14/command/execute_process.html