mirror of
https://github.com/Kistler-Group/sdbus-cpp.git
synced 2025-07-30 10:07:16 +02:00
Try to first find googletest in the system before downloading it (#125)
This commit is contained in:
committed by
GitHub
parent
b190646aa5
commit
d6fdacafbe
@ -2,26 +2,44 @@
|
|||||||
# DOWNLOAD AND BUILD OF GOOGLETEST
|
# DOWNLOAD AND BUILD OF GOOGLETEST
|
||||||
#-------------------------------
|
#-------------------------------
|
||||||
|
|
||||||
include(FetchContent)
|
set(GOOGLETEST_VERSION 1.10.0 CACHE STRING "Version of gmock to use")
|
||||||
|
set(GOOGLETEST_GIT_REPO "https://github.com/google/googletest.git" CACHE STRING "A git repo to clone and build googletest from if gmock is not found in the system")
|
||||||
|
|
||||||
message("Fetching googletest...")
|
find_package(GTest ${GOOGLETEST_VERSION} CONFIG)
|
||||||
FetchContent_Declare(googletest
|
if (NOT TARGET GTest::gmock)
|
||||||
GIT_REPOSITORY https://github.com/google/googletest.git
|
# Try pkg-config if GTest was not found through CMake config
|
||||||
GIT_TAG master
|
find_package(PkgConfig)
|
||||||
GIT_SHALLOW 1
|
if (PkgConfig_FOUND)
|
||||||
UPDATE_COMMAND "")
|
pkg_check_modules(GMock IMPORTED_TARGET GLOBAL gmock>=${GOOGLETEST_VERSION})
|
||||||
|
if(TARGET PkgConfig::GMock)
|
||||||
|
add_library(GTest::gmock ALIAS PkgConfig::GMock)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
# GTest was not found in the system, build it on our own
|
||||||
|
if (NOT TARGET GTest::gmock)
|
||||||
|
include(FetchContent)
|
||||||
|
|
||||||
#FetchContent_MakeAvailable(googletest) # Not available in CMake 3.13 :-( Let's do it manually:
|
message("Fetching googletest...")
|
||||||
FetchContent_GetProperties(googletest)
|
FetchContent_Declare(googletest
|
||||||
if(NOT googletest_POPULATED)
|
GIT_REPOSITORY ${GOOGLETEST_GIT_REPO}
|
||||||
FetchContent_Populate(googletest)
|
GIT_TAG release-${GOOGLETEST_VERSION}
|
||||||
set(gtest_force_shared_crt ON CACHE INTERNAL "" FORCE)
|
GIT_SHALLOW 1
|
||||||
set(BUILD_GMOCK ON CACHE INTERNAL "" FORCE)
|
UPDATE_COMMAND "")
|
||||||
set(INSTALL_GTEST OFF CACHE INTERNAL "" FORCE)
|
|
||||||
set(BUILD_SHARED_LIBS_BAK ${BUILD_SHARED_LIBS})
|
#FetchContent_MakeAvailable(googletest) # Not available in CMake 3.13 :-( Let's do it manually:
|
||||||
set(BUILD_SHARED_LIBS OFF)
|
FetchContent_GetProperties(googletest)
|
||||||
add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR})
|
if(NOT googletest_POPULATED)
|
||||||
set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_BAK})
|
FetchContent_Populate(googletest)
|
||||||
|
set(gtest_force_shared_crt ON CACHE INTERNAL "" FORCE)
|
||||||
|
set(BUILD_GMOCK ON CACHE INTERNAL "" FORCE)
|
||||||
|
set(INSTALL_GTEST OFF CACHE INTERNAL "" FORCE)
|
||||||
|
set(BUILD_SHARED_LIBS_BAK ${BUILD_SHARED_LIBS})
|
||||||
|
set(BUILD_SHARED_LIBS OFF)
|
||||||
|
add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR})
|
||||||
|
set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_BAK})
|
||||||
|
add_library(GTest::gmock ALIAS gmock)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
#-------------------------------
|
#-------------------------------
|
||||||
@ -87,11 +105,11 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
|||||||
|
|
||||||
add_executable(sdbus-c++-unit-tests ${UNITTESTS_SRCS})
|
add_executable(sdbus-c++-unit-tests ${UNITTESTS_SRCS})
|
||||||
target_compile_definitions(sdbus-c++-unit-tests PRIVATE LIBSYSTEMD_VERSION=${LIBSYSTEMD_VERSION})
|
target_compile_definitions(sdbus-c++-unit-tests PRIVATE LIBSYSTEMD_VERSION=${LIBSYSTEMD_VERSION})
|
||||||
target_link_libraries(sdbus-c++-unit-tests sdbus-c++-objlib gmock gmock_main)
|
target_link_libraries(sdbus-c++-unit-tests sdbus-c++-objlib GTest::gmock)
|
||||||
|
|
||||||
add_executable(sdbus-c++-integration-tests ${INTEGRATIONTESTS_SRCS})
|
add_executable(sdbus-c++-integration-tests ${INTEGRATIONTESTS_SRCS})
|
||||||
target_compile_definitions(sdbus-c++-integration-tests PRIVATE LIBSYSTEMD_VERSION=${LIBSYSTEMD_VERSION})
|
target_compile_definitions(sdbus-c++-integration-tests PRIVATE LIBSYSTEMD_VERSION=${LIBSYSTEMD_VERSION})
|
||||||
target_link_libraries(sdbus-c++-integration-tests sdbus-c++ gmock gmock_main)
|
target_link_libraries(sdbus-c++-integration-tests sdbus-c++ GTest::gmock)
|
||||||
|
|
||||||
# Manual performance and stress tests
|
# Manual performance and stress tests
|
||||||
option(ENABLE_PERF_TESTS "Build and install manual performance tests (default OFF)" OFF)
|
option(ENABLE_PERF_TESTS "Build and install manual performance tests (default OFF)" OFF)
|
||||||
|
Reference in New Issue
Block a user