Показать вывод EXECUTE_PROCESS для таких команд, как dir или echo на stdout - PullRequest
8 голосов
/ 14 марта 2011

Я бы хотел видеть вывод команды, запущенной командой EXECUTE_PROCESS, на stdout во время работы программы.

У меня есть следующий тестовый файл CMakeLists.txt

PROJECT(TEST)
cmake_minimum_required(VERSION 2.8)

EXECUTE_PROCESS(COMMAND dir)

При запуске из командной строки он выдает это

D:\tmp\testCMake\_build>"c:\Program Files (x86)\CMake 2.8\bin\cmake.exe" .
-- Configuring done
-- Generating done
-- Build files have been written to: D:/tmp/testCMake/_build

Я хотел бы увидеть вывод из dir непосредственно на консоли.

Я знаю, что могу захватить вывод, используя аргументы OUTPUT_VARIABLE и ERROR_VARIABLE.Но это дает результат в конце выполнения команды.

В соответствии с документацией вывод обычно должен проходить через

Если не заданы опции OUTPUT_ * или ERROR_ *вывод будет передан соответствующим каналам самого процесса CMake.

Я использую CMake 2.8.3 в Windows Vista

1 Ответ

10 голосов
/ 14 марта 2011

Попробуйте:

execute_process(COMMAND cmd /c dir)

вместо этого. 'dir' - это встроенная команда оболочки. «execute_process» ожидает имя файла * .exe в качестве первого аргумента после COMMAND. (Или какой-нибудь exe, доступный в PATH.)

На самом деле, если вы попытаетесь покопаться и выяснить, что не так с вашим исходным вызовом execute_process ...

execute_process(COMMAND dir RESULT_VARIABLE rv)
message("rv='${rv}'")

... вы получите такой вывод:

rv='The system cannot find the file specified'

Это в значительной степени то, что вы получили бы, если бы передали «dir» в вызов WIN32 CreateProcess.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...