2015-07-20 92 views
0

我试图重定向stdoutstderr使用CMake相同的文件。我在CMake中使用execute_process选项,并指定ERROR_FILEOUTPUT_FILE选项。CMake不重定向stderr与execute_process

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

文件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

指定两个OUTPUT_FILEERROR_FILE相同的文件只是最近才在CMake的3.3增加。见release notes

作为一个变通的早期版本中,使用选项OUTPUT_VARIABLEERROR_VARIABLE使用同一个变量,然后写变量的内容的文件,例如:

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