- Function ( __gtest_define_backwards_compatible_library_targets )
- Set ( GTEST_BOTH_LIBRARIES ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} PARENT_SCOPE )
-
- # Add targets mapping the same library names as defined in
- # older versions of CMake's FindGTest
- If ( NOT TARGET GTest::GTest )
- Add_Library ( GTest::GTest INTERFACE IMPORTED )
- Target_Link_Libraries ( GTest::GTest INTERFACE GTest::gtest )
- EndIf ()
- If ( NOT TARGET GTest::Main )
- Add_Library ( GTest::Main INTERFACE IMPORTED )
- Target_Link_Libraries ( GTest::Main INTERFACE GTest::gtest_main )
- EndIf ()
-
- If ( NOT TARGET GMock::GMock )
- Add_Library ( GMock::GMock INTERFACE IMPORTED )
- Target_Link_Libraries ( GMock::GMock INTERFACE GMock::gmock )
- EndIf ()
- If ( NOT TARGET GMock::Main )
- Add_Library ( GMock::Main INTERFACE IMPORTED )
- Target_Link_Libraries ( GMock::Main INTERFACE GMock::gmock_main )
- EndIf ()
- EndFunction()
-
- Include ( ExternalProject )
- Include ( FindPackageHandleStandardArgs )
-
- If( CMAKE_CROSSCOMPILING )
- Message ( STATUS "Disable search for 'GTest' package because of cross compiling. Skip unit test targets..." )
- Return ( )
- EndIf ( )
-
- If( GTest_FOUND )
- Message ( FATAL_ERROR "GTest already found! Do not expect that an other CMake script looked for 'GTest'. " )
- EndIf ( )
-
- # Configure external project
- Set ( GTEST_EX_PATH "${CMAKE_BINARY_DIR}/subprojects/googletest" )
- Get_Property ( IS_INCLUDED GLOBAL PROPERTY __external_project_googletest )
- If ( NOT IS_INCLUDED )
- ExternalProject_Add (
- project_googletest
- URL "https://github.com/google/googletest/archive/refs/tags/release-1.10.0.tar.gz"
- URL_HASH SHA256=9dc9157a9a1551ec7a7e43daea9a694a0bb5fb8bec81235d8a1e6ef64c716dcb
- PREFIX ${GTEST_EX_PATH}
- INSTALL_COMMAND make install DESTDIR=${GTEST_EX_PATH} )
- Set_Property ( GLOBAL PROPERTY __external_project_googletest TRUE )
- EndIf ( )
-
- Set ( GTEST_INCLUDE_DIR "${GTEST_EX_PATH}/usr/local/include" )
- Set ( GTEST_LIBRARY "${GTEST_EX_PATH}/usr/local/lib/libgtest.a" )
- Set ( GTEST_MAIN_LIBRARY "${GTEST_EX_PATH}/usr/local/lib/libgtest_main.a" )
- Set ( GMOCK_LIBRARY "${GTEST_EX_PATH}/usr/local/lib/libgmock.a" )
- Set ( GMOCK_MAIN_LIBRARY "${GTEST_EX_PATH}/usr/local/lib/libgmock_main.a" )
- File ( MAKE_DIRECTORY ${GTEST_INCLUDE_DIR} )
-
- # Find package
- Find_Package_Handle_Standard_Args ( GTest
- DEFAULT_MSG
- GTEST_INCLUDE_DIR
- GTEST_LIBRARY
- GTEST_MAIN_LIBRARY
- GMOCK_LIBRARY
- GMOCK_MAIN_LIBRARY )
-
- If ( GTest_FOUND )
-
- Set ( GTEST_INCLUDE_DIRS ${GTEST_INCLUDE_DIR} )
-
- Find_Package ( Threads QUIET )
-
- If ( NOT TARGET GTest::gtest )
- Add_Library ( GTest::gtest STATIC IMPORTED )
- Add_Dependencies ( GTest::gtest project_googletest )
- If ( TARGET Threads::Threads )
- Set_Target_Properties ( GTest::gtest PROPERTIES
- INTERFACE_LINK_LIBRARIES Threads::Threads )
- EndIf ()
- Set_Target_Properties ( GTest::gtest
- PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}"
- IMPORTED_LOCATION "${GTEST_LIBRARY}" )
- EndIf ()
-
- If ( NOT TARGET GTest::gtest_main )
- Add_Library ( GTest::gtest_main STATIC IMPORTED )
- Set_Target_Properties ( GTest::gtest_main
- PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}"
- INTERFACE_LINK_LIBRARIES "GTest::gtest"
- IMPORTED_LOCATION "${GTEST_MAIN_LIBRARY}" )
- EndIf()
-
- If ( NOT TARGET GMock::gmock )
- Add_Library ( GMock::gmock STATIC IMPORTED )
- If ( TARGET Threads::Threads )
- Set_Target_Properties ( GMock::gmock PROPERTIES
- INTERFACE_LINK_LIBRARIES Threads::Threads )
- EndIf ()
- Set_Target_Properties ( GMock::gmock
- PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}"
- INTERFACE_LINK_LIBRARIES "GTest::gtest"
- IMPORTED_LOCATION "${GMOCK_LIBRARY}" )
- EndIf ()
-
- If ( NOT TARGET GMock::gmock_main )
- Add_Library ( GMock::gmock_main STATIC IMPORTED )
- Set_Target_Properties ( GMock::gmock_main
- PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}"
- INTERFACE_LINK_LIBRARIES "GMock::gmock"
- IMPORTED_LOCATION "${GMOCK_MAIN_LIBRARY}" )
- EndIf()
-
- __gtest_define_backwards_compatible_library_targets ()
- EndIf ()
|