if(WITH_TESTS) include(CTest) file(GLOB sources_tests src/tests/test_*.cpp) find_package(Catch2) 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.") 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() endif()