我目前有这个巧妙的代码,可以将我的单源文件测试添加到我的CMake项目中:
function(runtime_test test_dir test_name)
add_executable(${test_name} EXCLUDE_FROM_ALL ${TEST_ROOT}/${test_dir}/${test_name}.c++ ${TEST_ROOT}/test.h++)
set_target_properties(${test_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY test/${test_dir})
#add_test(remove/${test_dir}/${test_name} ${CMAKE_COMMAND} -E remove test/${test_dir}/${test_name}${CMAKE_EXECUTABLE_SUFFIX})
#add_test(build/${test_dir}/${test_name} ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR} --target ${test_name})
#add_test(test/${test_dir}/${test_name} test/${test_dir}/${test_name})
add_test(${test_dir}/${test_name} ${CMAKE_COMMAND} -E remove test/${test_dir}/${test_name}${CMAKE_EXECUTABLE_SUFFIX}
&& ${CMAKE_COMMAND} --verbose --build ${CMAKE_BINARY_DIR} --target ${test_name}
&& test/${test_dir}/${test_name})
set_property(TEST ${test_dir}/${test_name} APPEND PROPERTY DEPENDS build/${test_dir}/${test_name})
endfunction()
注释行添加3个“测试”,删除,构建和运行可执行文件。我按如下方式进行了一次测试:
ctest --verbose -R some_test
通过注释3行,我可以看到构建错误输出到我的屏幕。问题是:这使得测试数量不具代表性。如果我使用3合1解决方案,则隐藏构建错误输出。有什么方法可以解决这个问题吗?