diff --git a/CMakeLists.txt b/CMakeLists.txt index 02dac6a..92c6d68 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -132,6 +132,7 @@ install(EXPORT YatoTargets option(YATO_BUILD_TESTS "Build unit tests" ON) if(YATO_BUILD_TESTS) + enable_testing() add_subdirectory(./tests) endif() diff --git a/cmake/dependency.gtest.cmake b/cmake/dependency.gtest.cmake index 5991c7f..b5e176a 100644 --- a/cmake/dependency.gtest.cmake +++ b/cmake/dependency.gtest.cmake @@ -7,14 +7,12 @@ # Google test dependency # https://github.com/google/googletest # -# Output variables: -# GTEST_INCLUDE_DIR - includes -# GTEST_LIBRARY_DIR - link directories -# GTEST_LIBRARIES - link targets -# GMOCK_INCLUDE_DIR - includes +# Targets: +# gtest and gtest_main - -include(${YATO_SOURCE_DIR}/cmake/dependency.common.functions.cmake) +if (TARGET gtest) + return() +endif() macro(_gtest_fix_definitions _TARGET_NAME_) if(TARGET ${_TARGET_NAME_}) @@ -22,6 +20,15 @@ macro(_gtest_fix_definitions _TARGET_NAME_) endif() endmacro(_gtest_fix_definitions) +find_package(GTest CONFIG) +if (TARGET GTest::gtest) + add_library(gtest ALIAS GTest::gtest) + add_library(gtest_main ALIAS GTest::gtest_main) + return() +endif() + +include(${YATO_SOURCE_DIR}/cmake/dependency.common.functions.cmake) + dependency_find_or_download( NAME GTEST VERBOSE_NAME "GoogleTest" @@ -51,12 +58,3 @@ if(NOT TARGET gtest) set_property(TARGET gtest PROPERTY FOLDER "Dependencies") set_property(TARGET gtest_main PROPERTY FOLDER "Dependencies") endif() - -set(GTEST_INCLUDE_DIR ${GTEST_FOUND_ROOT}/googletest/include CACHE INTERNAL "") -set(GMOCK_INCLUDE_DIR ${GTEST_FOUND_ROOT}/googlemock/include CACHE INTERNAL "") -set(GTEST_LIBRARY_DIR "" CACHE INTERNAL "") -list(APPEND GTEST_LIBRARIES gtest) -list(APPEND GTEST_LIBRARIES gtest_main) -set(GTEST_LIBRARIES ${GTEST_LIBRARIES} CACHE INTERNAL "") - - diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 514d80f..d57d745 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -15,7 +15,6 @@ include(${YATO_SOURCE_DIR}/cmake/dependency.gtest.cmake) #========================================== # Sources -include_directories(${GTEST_INCLUDE_DIR}) include_directories(${YATO_INCLUDE_DIRS}) file(GLOB all_tests "${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/source/*.h") @@ -33,9 +32,9 @@ source_group(TREE "${YATO_SOURCE_DIR}" FILES ${all_sources}) # Targets add_definitions(-DYATO_ENABLE_TESTED_ASSERTIONS) -link_directories(${GTEST_LIBRARY_DIR}) add_executable(YatoTests ${all_sources}) +target_link_libraries(YatoTests PRIVATE gtest_main) set_property(TARGET YatoTests PROPERTY FOLDER "Tests") @@ -45,6 +44,5 @@ _gtest_fix_definitions(YatoTests) foreach(lib ${Yato_TEST_LIBS}) target_link_libraries(YatoTests ${lib}) endforeach() -foreach(lib ${GTEST_LIBRARIES}) - target_link_libraries(YatoTests ${lib}) -endforeach() + +add_test(NAME "unit-tests" COMMAND "./YatoTests")