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

pki*_*kit 9 cmake

我希望EXECUTE_PROCESS在程序运行时直接看到命令在stdout上启动的命令输出.

我有以下测试CMakeLists.txt文件

PROJECT(TEST)
cmake_minimum_required(VERSION 2.8)

EXECUTE_PROCESS(COMMAND dir)
Run Code Online (Sandbox Code Playgroud)

从命令行运行时,它会产生这个

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
Run Code Online (Sandbox Code Playgroud)

我想dir直接在控制台上看到输出.

我知道我可以使用OUTPUT_VARIABLEERROR_VARIABLE参数捕获输出.但是,这会在命令运行结束时提供结果.

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

如果没有给出OUTPUT_*或ERROR_*选项,则输出将与CMake进程本身的相应管道共享.

我在Windows Vista上使用CMake 2.8.3

DLR*_*ave 10

尝试:

execute_process(COMMAND cmd /c dir)
Run Code Online (Sandbox Code Playgroud)

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

事实上,如果你试图挖掘并找出你原来的execute_process调用有什么问题......

execute_process(COMMAND dir RESULT_VARIABLE rv)
message("rv='${rv}'")
Run Code Online (Sandbox Code Playgroud)

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

rv='The system cannot find the file specified'
Run Code Online (Sandbox Code Playgroud)

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