CMake 不使用 execute_process 重定向 stderr
CMake not redirecting stderr with execute_process
我正在尝试使用 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
)
为 OUTPUT_FILE
和 ERROR_FILE
指定相同的文件最近才添加到 CMake 3.3 中。参见 release notes。
作为早期版本的变通方法,对同一个变量使用选项 OUTPUT_VARIABLE
和 ERROR_VARIABLE
,然后将变量的内容写入文件,例如:
execute_process(
COMMAND "${EXE}" ${ARGS}
ERROR_VARIABLE _testOut
OUTPUT_VARIABLE _testOut
)
file (WRITE "test${ID}.out" "${_testOut}")
我正在尝试使用 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
)
为 OUTPUT_FILE
和 ERROR_FILE
指定相同的文件最近才添加到 CMake 3.3 中。参见 release notes。
作为早期版本的变通方法,对同一个变量使用选项 OUTPUT_VARIABLE
和 ERROR_VARIABLE
,然后将变量的内容写入文件,例如:
execute_process(
COMMAND "${EXE}" ${ARGS}
ERROR_VARIABLE _testOut
OUTPUT_VARIABLE _testOut
)
file (WRITE "test${ID}.out" "${_testOut}")