CMake 不使用 execute_process 重定向 stderr

CMake not redirecting stderr with execute_process

我正在尝试使用 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
)

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}")