execute_process
Выполнить один или несколько дочерних процессов.
execute_process(COMMAND <cmd1> [args1...]]
[COMMAND <cmd2> [args2...] [...]]
[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 (Original Equipment Manufacturer).
-
UTF8 or UTF-8 - Использовать кодовую страницу UTF-8. До CMake 3.11.0 для этой кодировки принималось только
UTF8. В CMake 3.11.0 для согласованности с соглашением об именовании UTF-8 RFC было добавленоUTF-8.
-
Если для одного и того же канала указано более одного параметра OUTPUT_* или ERROR_*, приоритет не определен. Если параметры OUTPUT_* или ERROR_* не указаны, вывод будет совместно использоваться с соответствующими каналами самого процесса CMake.
Команда execute_process() — это более новая и мощная версия exec_program(), но старая команда сохранена для обеспечения совместимости. Обе команды выполняются, пока CMake обрабатывает проект до генерации системы сборки. Используйте add_custom_target() и add_custom_command() для создания пользовательских команд, которые выполняются во время сборки.
© 2000–2019 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/v3.12/command/execute_process.html