2011-03-14 149 views
8

我希望在程序運行時直接看到標準輸出上由EXECUTE_PROCESS命令啓動的命令的輸出。顯示EXECUTE_PROCESS輸出的命令如目錄或回顯標準輸出

我有以下測試的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_VARIABLEERROR_VARIABLE參數捕獲輸出。但是,它會在命令運行結束時提供結果。

根據該輸出通常應通過

傳遞如果文檔沒有OUTPUT_ *或ERROR_ *選項給出的輸出將與 的CMake的 過程本身的相應管道共享 。

我使用的CMake 2.8.3在Windows Vista上

回答

9

嘗試:

execute_process(COMMAND cmd /c dir) 

代替。 'dir'是一個內置的shell命令。 'execute_process'需要一個* .exe文件名,因爲它是COMMAND之後的第一個參數。 (或exe文件的路徑可用。)

事實上,如果您嘗試挖掘並找出什麼地方錯了你原來的execute_process電話...

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

...你會得到這個輸出:

rv='The system cannot find the file specified' 

如果您將「dir」傳遞給WIN32 CreateProcess調用,您會得到什麼結果。

+0

你說得對。我沒有檢查。問題在於它仍然沒有出現在CMake GUI中,但我應該提出另一個問題。 – pkit 2011-03-14 20:21:37

相關問題