GetGoogletest.cmake 1.3 KB

123456789101112131415161718192021222324252627282930313233
  1. # Search prebuilt googletest. If nothing found - download, unpack, build and then search again
  2. # allow to get googletest from bundle also (instead of download)
  3. set ( GTEST_GITHUB "https://github.com/google/googletest/archive/main.zip" )
  4. set ( GTEST_ZIP "googletest-master.zip" ) # that is default filename if you download GTEST_GITHUB using browser
  5. set ( GTEST_URL "${LIBS_BUNDLE}/${GTEST_ZIP}" )
  6. if (TARGET GTest::gmock_main)
  7. return ()
  8. endif ()
  9. include ( update_bundle )
  10. # check pre-built gtests
  11. find_package ( GTest QUIET CONFIG )
  12. if (TARGET GTest::gmock_main)
  13. return ()
  14. endif ()
  15. # not found. Populate and build cache package for now and future usage.
  16. MESSAGE ( STATUS "prebuilt googletest wasn't found. Will build it right now..." )
  17. select_nearest_url ( GTEST_PLACE "gtests" ${GTEST_URL} ${GTEST_GITHUB} )
  18. # build as external project and install into cache
  19. get_build ( GTEST_BUILD gtest )
  20. configure_file ( ${MANTICORE_SOURCE_DIR}/cmake/gtest-imported.cmake.in "${MANTICORE_BINARY_DIR}/gtestbuild/CMakeLists.txt" )
  21. execute_process ( COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" . WORKING_DIRECTORY "${MANTICORE_BINARY_DIR}/gtestbuild" )
  22. execute_process ( COMMAND "${CMAKE_COMMAND}" --build . WORKING_DIRECTORY "${MANTICORE_BINARY_DIR}/gtestbuild" )
  23. # now it should find
  24. find_package ( GTest CONFIG )
  25. trace ( GTest::gmock_main )