我想我的测试要在每个我的项目成功建成时间推出。 如果一些测试坏了 - 我想太碎我的身材。 默认情况下,我需要通过运行手动运行测试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
目标建成。