如何建立我的项目通过CMake后运行CTEST(How to run ctest after bui

2019-07-20 15:19发布

我想我的测试要在每个我的项目成功建成时间推出。 如果一些测试坏了 - 我想太碎我的身材。 默认情况下,我需要通过运行手动运行测试ctest命令。 CTEST可以实际构建的项目,但我使用IDE调用make构建来源。 而make不运行测试。

我这个命令添加到我的根的CMakeLists.txt文件,但它不工作。

add_custom_command(OUTPUT tests.txt 
                   POST_BUILD
                   COMMAND ctest --output-on-failure)

CMake的不返回任何错误,一切都建立很好,但是我的自定义命令不调用。 我怎样才能运行CMake的每次成功构建后的东西吗?

更新:

我的最终解决方案是创建这个宏:

macro(add_unit_test target target_test)
    set(UNIT_TEST_TARGETS ${UNIT_TEST_TARGETS} ${target_test} PARENT_SCOPE)
    add_test(target ${CMAKE_CURRENT_BINARY_DIR}/${target_test})
endmacro(add_unit_test)

它要求add_test和记忆测试目标在列表中。 在该宏添加项目的每一个测试。 在根的CMakeLists.txt我有这样的代码:

add_custom_target( all_tests ALL
                   DEPENDS ${UNIT_TEST_TARGETS}
)
add_custom_command(TARGET all_tests
                   COMMENT "Run tests"
                   POST_BUILD COMMAND ctest ARGS --output-on-failure
                   WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)

它创建依赖于一个项目的所有单元测试的定制目标。 自定义命令运行后all_tests目标建成。

Answer 1:

这种形式的add_custom_command如果另一CMake的目标有“tests.txt”的依赖将只执行。 我认为没有其他的目标有“tests.txt”作为输入文件,因此自定义命令从不运行。

我想你可以使用的第二种形式add_custom_command实现自己的目标; 就像是:

add_custom_command(TARGET MainTest
                   POST_BUILD
                   COMMAND ctest -C $<CONFIGURATION> --output-on-failure)


文章来源: How to run ctest after building my project with cmake
标签: cmake ctest