0

我目前有这个巧妙的代码,可以将我的单源文件测试添加到我的 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 解决方案,构建错误输出将被隐藏。有没有办法解决这个问题?

4

0 回答 0