C++ 始终使用CMake运行测试用例

C++ 始终使用CMake运行测试用例,c++,cmake,C++,Cmake,我正在使用CMake和Linux通过以下命令从CMakeLists.txt运行测试用例: add_custom_command( TARGET tests POST_BUILD COMMAND ${CMAKE_CURRENT_BINARY_DIR}/tests ) 这仅在代码被更改时执行,是否仍要这样做,以便它始终运行二进制文件 对于解决方案,我必须这样做: add_custom_command(

我正在使用CMake和Linux通过以下命令从CMakeLists.txt运行测试用例:

add_custom_command( TARGET  tests
                POST_BUILD
                COMMAND ${CMAKE_CURRENT_BINARY_DIR}/tests
                )
这仅在代码被更改时执行,是否仍要这样做,以便它始终运行二进制文件

对于解决方案,我必须这样做:

add_custom_command( OUTPUT tests.a
                POST_BUILD
                COMMAND ${CMAKE_CURRENT_BINARY_DIR}/tests
                )

add_custom_target( runTests
                ALL
                DPEENDS tests.a
                )

改用添加自定义目标。它在每次构建时执行。


虽然我当然鼓励测试的精神,但您是否真的认为在每个构建上始终运行它们是一个好主意,而不是每次都显式地运行
make test
(或
ctest
)?是的,它是在测试标志后面。问题是二进制文件只在代码更改时执行。如果其他人更改了他们的代码,而我的代码相同,则不会执行二进制代码,这会扰乱集成系统。您还可以使用“make run_test”来运行所有测试。
add_custom_target( run_test ALL
                   COMMAND ${CMAKE_CURRENT_BINARY_DIR}/tests )