diff --git a/tests.CMakeLists.txt b/tests.CMakeLists.txt index f38d65e..f3e08c1 100644 --- a/tests.CMakeLists.txt +++ b/tests.CMakeLists.txt @@ -1,24 +1,27 @@ if(WITH_TESTS) + include(CTest) + file(GLOB sources_tests src/tests/test_*.cpp) + find_package(Catch2) - if(Catch2_FOUND) - set(MYCATCH, Catch2::Catch2) - else() + if(Catch2_FOUND) # Catch 2.x + include(Catch) + add_executable(all_tests src/tests/main.cpp ${sources_tests}) + target_link_libraries(all_tests ${CMAKE_PROJECT_NAME} Catch2::Catch2) + target_include_directories(all_tests PRIVATE "/usr/include/catch2") + catch_discover_tests(all_tests) + else() # Catch 1.x if(EXISTS "/usr/include/catch.hpp") message(STATUS "Catch 1.x found.") - set(MYCATCH, "") + foreach(src ${sources_tests}) + get_filename_component(bin ${src} NAME_WE) + add_executable(${bin} src/tests/main.cpp ${src}) + target_link_libraries(${bin} ${CMAKE_PROJECT_NAME}) + target_include_directories(${bin} PRIVATE "/usr/include/catch2") + add_test(${bin} ${bin}) + endforeach() else() message(FATAL_ERROR "Neither Catch 2.x nor Catch 1.x could be found.") endif() endif() - include(CTest) - - file(GLOB sources_tests src/tests/test_*.cpp) - foreach(src ${sources_tests}) - get_filename_component(bin ${src} NAME_WE) - add_executable(${bin} src/tests/main.cpp ${src}) - target_link_libraries(${bin} ${CMAKE_PROJECT_NAME} ${MYCATCH}) - target_include_directories(${bin} PRIVATE "/usr/include/catch2") - add_test(${bin} ${bin}) - endforeach() endif()