1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
# Copyright The OpenTelemetry Authors
# SPDX-License-Identifier: Apache-2.0
# Import GTest targets (GTest::gtest, GTest::gtest_main, and GTest::gmock) and set required variables GTEST_BOTH_LIBRARIES and GMOCK_LIB.
# 1. Find an installed GTest package
# 2. Use FetchContent to build googletest from a git submodule
# 3. Use FetchContent to fetch and build googletest from GitHub
find_package(GTest CONFIG QUIET)
set(GTest_PROVIDER "find_package")
if(NOT GTest_FOUND)
set(_GOOGLETEST_SUBMODULE_DIR "${opentelemetry-cpp_SOURCE_DIR}/third_party/googletest")
if(EXISTS "${_GOOGLETEST_SUBMODULE_DIR}/.git")
FetchContent_Declare(
"googletest"
SOURCE_DIR "${_GOOGLETEST_SUBMODULE_DIR}"
)
set(GTest_PROVIDER "fetch_source")
else()
FetchContent_Declare(
"googletest"
GIT_REPOSITORY "https://github.com/google/googletest.git"
GIT_TAG "${googletest_GIT_TAG}"
)
set(GTest_PROVIDER "fetch_repository")
endif()
set(BUILD_GMOCK ON CACHE BOOL "" FORCE)
set(INSTALL_GTEST OFF CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)
# Set the GTest_VERSION variable from the git tag.
string(REGEX REPLACE "^v([0-9]+\\.[0-9]+\\.[0-9]+)$" "\\1" GTest_VERSION "${googletest_GIT_TAG}")
endif()
if(NOT TARGET GTest::gtest OR
NOT TARGET GTest::gtest_main OR
NOT TARGET GTest::gmock)
message(FATAL_ERROR "A required GTest target (GTest::gtest, GTest::gtest_main, or GTest::gmock) was not imported")
endif()
if(NOT GTEST_BOTH_LIBRARIES)
set(GTEST_BOTH_LIBRARIES GTest::gtest GTest::gtest_main)
endif()
if(NOT GMOCK_LIB)
set(GMOCK_LIB GTest::gmock)
endif()
|