CMake不使用execute_process重定向stderr

时间:2015-07-20 17:44:53

标签: cmake stdout stderr

我正在尝试使用CMake将stdoutstderr重定向到同一个文件。我在CMake中使用execute_process选项并指定了ERROR_FILEOUTPUT_FILE选项。

我成功捕获输出,但错误不存在。我做错了什么?

档案CMakeLists.txt

add_test(NAME test${ID}
    COMMAND ${CMAKE_COMMAND}
    -DEXE=../examples/test${exampleID}
    -DID=${ID}
    -DARGS=${args}
    -P ${CMAKE_CURRENT_SOURCE_DIR}/Tester.cmake
)

档案Tester.cmake

separate_arguments( ARGS )
# Run the test
execute_process( 
    COMMAND "${EXE}" ${ARGS}
    ERROR_FILE test${ID}.out
    OUTPUT_FILE test${ID}.out
)

1 个答案:

答案 0 :(得分:1)

最近在CMake 3.3中添加了为OUTPUT_FILEERROR_FILE指定相同文件的文件。请参阅release notes

作为早期版本的解决方法,使用具有相同变量的选项OUTPUT_VARIABLEERROR_VARIABLE,然后将变量的内容写入文件,例如:

execute_process( 
    COMMAND "${EXE}" ${ARGS}
    ERROR_VARIABLE _testOut
    OUTPUT_VARIABLE _testOut
)
file (WRITE "test${ID}.out" "${_testOut}")