cmake/FindGTest.cmake (26 lines of code) (raw):

if (DEFINED GMOCK_INCLUDE_DIR AND DEFINED GTEST_INCLUDE_DIR AND DEFINED GTEST_LIBRARIES AND DEFINED GMOCK_LIBRARIES) message(STATUS "Using GTest from specified path") else() message(STATUS "Not all GTest variable got specified: " "'GMOCK_INCLUDE_DIR', 'GTEST_INCLUDE_DIR', " "'GTEST_LIBRARIES', 'GMOCK_LIBRARIES'") message(STATUS "fetch GTest from https://github.com/google/googletest.git") include(FetchContent) FetchContent_Declare( googletest GIT_REPOSITORY https://github.com/google/googletest.git GIT_TAG release-1.11.0 GIT_SHALLOW ON ) set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) set(BUILD_GMOCK ON CACHE BOOL "" FORCE) set(BUILD_GTEST ON CACHE BOOL "" FORCE) FetchContent_MakeAvailable(googletest) set(GMOCK_INCLUDE_DIR ${CMAKE_BINARY_DIR}/_deps/googletest-src/googlemock/include/) set(GTEST_INCLUDE_DIR ${CMAKE_BINARY_DIR}/_deps/googletest-src/googletest/include/) set(GTEST_LIBRARIES gtest_main) set(GMOCK_LIBRARIES gmock_main) endif() message(STATUS "GTest: ${GTEST_INCLUDE_DIR}, ${GTEST_LIBRARIES}") message(STATUS "GMock: ${GMOCK_INCLUDE_DIR}, ${GMOCK_LIBRARIES}")