Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

118 linhas
4.8 KiB

  1. Function ( __gtest_define_backwards_compatible_library_targets )
  2. Set ( GTEST_BOTH_LIBRARIES ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} PARENT_SCOPE )
  3. # Add targets mapping the same library names as defined in
  4. # older versions of CMake's FindGTest
  5. If ( NOT TARGET GTest::GTest )
  6. Add_Library ( GTest::GTest INTERFACE IMPORTED )
  7. Target_Link_Libraries ( GTest::GTest INTERFACE GTest::gtest )
  8. EndIf ()
  9. If ( NOT TARGET GTest::Main )
  10. Add_Library ( GTest::Main INTERFACE IMPORTED )
  11. Target_Link_Libraries ( GTest::Main INTERFACE GTest::gtest_main )
  12. EndIf ()
  13. If ( NOT TARGET GMock::GMock )
  14. Add_Library ( GMock::GMock INTERFACE IMPORTED )
  15. Target_Link_Libraries ( GMock::GMock INTERFACE GMock::gmock )
  16. EndIf ()
  17. If ( NOT TARGET GMock::Main )
  18. Add_Library ( GMock::Main INTERFACE IMPORTED )
  19. Target_Link_Libraries ( GMock::Main INTERFACE GMock::gmock_main )
  20. EndIf ()
  21. EndFunction()
  22. Include ( ExternalProject )
  23. Include ( FindPackageHandleStandardArgs )
  24. If( CMAKE_CROSSCOMPILING )
  25. Message ( STATUS "Disable search for 'GTest' package because of cross compiling. Skip unit test targets..." )
  26. Return ( )
  27. EndIf ( )
  28. If( GTest_FOUND )
  29. Return ()
  30. EndIf ( )
  31. # Configure external project
  32. Set ( GTEST_EX_PATH "${CMAKE_BINARY_DIR}/subprojects/googletest" )
  33. Get_Property ( IS_INCLUDED GLOBAL PROPERTY __external_project_googletest )
  34. If ( NOT IS_INCLUDED )
  35. ExternalProject_Add (
  36. project_googletest
  37. URL "https://github.com/google/googletest/archive/refs/tags/release-1.10.0.tar.gz"
  38. URL_HASH SHA256=9dc9157a9a1551ec7a7e43daea9a694a0bb5fb8bec81235d8a1e6ef64c716dcb
  39. PREFIX ${GTEST_EX_PATH}
  40. INSTALL_COMMAND make install DESTDIR=${GTEST_EX_PATH} )
  41. Set_Property ( GLOBAL PROPERTY __external_project_googletest TRUE )
  42. EndIf ( )
  43. Set ( GTEST_INCLUDE_DIR "${GTEST_EX_PATH}/usr/local/include" )
  44. Set ( GTEST_LIBRARY "${GTEST_EX_PATH}/usr/local/lib/libgtest.a" )
  45. Set ( GTEST_MAIN_LIBRARY "${GTEST_EX_PATH}/usr/local/lib/libgtest_main.a" )
  46. Set ( GMOCK_LIBRARY "${GTEST_EX_PATH}/usr/local/lib/libgmock.a" )
  47. Set ( GMOCK_MAIN_LIBRARY "${GTEST_EX_PATH}/usr/local/lib/libgmock_main.a" )
  48. File ( MAKE_DIRECTORY ${GTEST_INCLUDE_DIR} )
  49. # Find package
  50. Find_Package_Handle_Standard_Args ( GTest
  51. DEFAULT_MSG
  52. GTEST_INCLUDE_DIR
  53. GTEST_LIBRARY
  54. GTEST_MAIN_LIBRARY
  55. GMOCK_LIBRARY
  56. GMOCK_MAIN_LIBRARY )
  57. If ( GTest_FOUND )
  58. Set ( GTEST_INCLUDE_DIRS ${GTEST_INCLUDE_DIR} )
  59. Find_Package ( Threads QUIET )
  60. If ( NOT TARGET GTest::gtest )
  61. Add_Library ( GTest::gtest STATIC IMPORTED )
  62. Add_Dependencies ( GTest::gtest project_googletest )
  63. If ( TARGET Threads::Threads )
  64. Set_Target_Properties ( GTest::gtest PROPERTIES
  65. INTERFACE_LINK_LIBRARIES Threads::Threads )
  66. EndIf ()
  67. Set_Target_Properties ( GTest::gtest
  68. PROPERTIES
  69. INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}"
  70. IMPORTED_LOCATION "${GTEST_LIBRARY}" )
  71. EndIf ()
  72. If ( NOT TARGET GTest::gtest_main )
  73. Add_Library ( GTest::gtest_main STATIC IMPORTED )
  74. Set_Target_Properties ( GTest::gtest_main
  75. PROPERTIES
  76. INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}"
  77. INTERFACE_LINK_LIBRARIES "GTest::gtest"
  78. IMPORTED_LOCATION "${GTEST_MAIN_LIBRARY}" )
  79. EndIf()
  80. If ( NOT TARGET GMock::gmock )
  81. Add_Library ( GMock::gmock STATIC IMPORTED )
  82. If ( TARGET Threads::Threads )
  83. Set_Target_Properties ( GMock::gmock PROPERTIES
  84. INTERFACE_LINK_LIBRARIES Threads::Threads )
  85. EndIf ()
  86. Set_Target_Properties ( GMock::gmock
  87. PROPERTIES
  88. INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}"
  89. INTERFACE_LINK_LIBRARIES "GTest::gtest"
  90. IMPORTED_LOCATION "${GMOCK_LIBRARY}" )
  91. EndIf ()
  92. If ( NOT TARGET GMock::gmock_main )
  93. Add_Library ( GMock::gmock_main STATIC IMPORTED )
  94. Set_Target_Properties ( GMock::gmock_main
  95. PROPERTIES
  96. INTERFACE_INCLUDE_DIRECTORIES "${GTEST_INCLUDE_DIRS}"
  97. INTERFACE_LINK_LIBRARIES "GMock::gmock"
  98. IMPORTED_LOCATION "${GMOCK_MAIN_LIBRARY}" )
  99. EndIf()
  100. __gtest_define_backwards_compatible_library_targets ()
  101. EndIf ()