在stdout上显示dir或echo等命令的EXECUTE_PROCESS输出

时间:2011-03-14 15:17:27

标签: cmake

我希望在程序运行时直接看到由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_VARIABLEERROR_VARIABLE参数捕获输出。但是,这会在命令运行结束时提供结果。

根据文档,输出通常应该通过

  

如果没有OUTPUT_ *或ERROR_ *选项   给定输出将与之共享   CMake的相应管道   过程本身。

我在Windows Vista上使用CMake 2.8.3

1 个答案:

答案 0 :(得分:10)

尝试:

execute_process(COMMAND cmd /c dir)

代替。 'dir'是一个内置的shell命令。 'execute_process'需要一个* .exe文件名,因为它是COMMAND之后的第一个参数。 (或PATH中提供的一些exe。)

事实上,如果你试图深入了解原始的execute_process调用有什么问题......

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

...你会得到这个输出:

rv='The system cannot find the file specified'

如果你将“dir”传递给WIN32 CreateProcess调用,这几乎就是你得到的。