2011-03-14 150 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

相关问题