如果我不使用CDash,是否应该使用ctest仪表板?

时间:2019-01-29 14:29:47

标签: cmake ctest

我正在根据我从Daniel Pfeifer的“有效CMake”演讲中学到的内容来重新定义项目的cmake配置,但我仍然无法理解ctest。

目前,我的测试具有以下设置:

enable_testing()
find_program(MEMCHECK_COMMAND valgrind)
# executable
add_executable(myTest ${SRC_LIST})
target_link_libraries(myTest ${LIB_LIST})
# test
add_test(NAME myTest_test
    COMMAND ${CMAKE_CURRENT_BINARY_DIR}/myTest)
add_custom_target(myTest_test
    COMMAND ctest -R myTest_test --output-on-failure
    DEPENDS myTest)
# memcheck
add_test(NAME myTest_memcheck
    COMMAND ${MEMCHECK_COMMAND} ${CMAKE_CURRENT_BINARY_DIR}/myTest)
add_custom_target(myTest_memcheck
    COMMAND ctest -R myTest_memcheck --output-on-failure
    DEPENDS ${TEST_NAME})

然后我可以运行make myTest_testmake myTest_memcheck并知道我没有破坏任何东西。

我不得不为每个测试可执行文件(而且项目很大,所以我有几十个)必须执行此操作,甚至提取为一个函数,这简直让人觉得不对。

我已经阅读了ctest文档(https://gitlab.kitware.com/cmake/community/wikis/doc/ctest/Testing-With-CTest),仪表板对我来说似乎非常完美-如果我可以运行ctest -R myTest -T testctest -R myTest -T memcheckctest -R myTest -T coverage,我将非常高兴:)(如果需要,这些命令将触发构建,则更加高兴。)

问题是include(CTest)创建了我不需要的目标(连续/夜间仪表板以及“开始/更新/配置/提交”步骤)。它将仅用作实验性构建,并由开发人员在编码期间执行。对于CI,我拥有詹金斯本身的魔力。我想结束于: -仪表板/构建 -仪表板/测试 -仪表板/ MemCheck -仪表板/盖板

我该怎么办?我应该手动创建自己的仪表板(如果可能的话)还是放弃这个想法并保留我的自定义目标?

0 个答案:

没有答案