我希望在程序运行时直接看到由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的相应管道 过程本身。
我在Windows Vista上使用CMake 2.8.3
答案 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调用,这几乎就是你得到的。