project(packet) set(${PROJECT_NAME}_src src/Packet.cppm) # this is the "object library" target: compiles the sources only once add_library(${PROJECT_NAME}_lib STATIC ${${PROJECT_NAME}_src}) target_include_directories(${PROJECT_NAME}_lib PUBLIC ./src) find_package(cryptopp CONFIG REQUIRED) target_link_libraries(${PROJECT_NAME}_lib PRIVATE cryptopp::cryptopp) # Setup tests enable_testing() find_package(GTest CONFIG REQUIRED) include(GoogleTest) file(GLOB_RECURSE tests_${PROJECT_NAME}_src CONFIGURE_DEPENDS tests/*.cppm tests/*/*.cppm) add_executable(tests_${PROJECT_NAME} ${tests_${PROJECT_NAME}_src} tests/sanitizers.cpp) target_link_libraries(tests_${PROJECT_NAME} PRIVATE GTest::gtest GTest::gtest_main GTest::gmock GTest::gmock_main ${PROJECT_NAME}_lib) add_test(AllTestsIn${PROJECT_NAME} tests_${PROJECT_NAME}) gtest_discover_tests(tests_${PROJECT_NAME})