2015-07-20 44 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}")