我正在尝试使用CMake将stdout
和stderr
重定向到同一个文件。我在CMake中使用execute_process
选项并指定了ERROR_FILE
和OUTPUT_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
)
答案 0 :(得分:1)
最近在CMake 3.3中添加了为OUTPUT_FILE
和ERROR_FILE
指定相同文件的文件。请参阅release notes。
作为早期版本的解决方法,使用具有相同变量的选项OUTPUT_VARIABLE
和ERROR_VARIABLE
,然后将变量的内容写入文件,例如:
execute_process(
COMMAND "${EXE}" ${ARGS}
ERROR_VARIABLE _testOut
OUTPUT_VARIABLE _testOut
)
file (WRITE "test${ID}.out" "${_testOut}")