我希望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_VARIABLE和ERROR_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调用,这几乎就是你得到的.
| 归档时间: |
|
| 查看次数: |
15219 次 |
| 最近记录: |