|
|
@@ -0,0 +1,117 @@ |
|
|
|
|
|
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 () |