gtest.cmake 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. # copyright (c) 2024 PaddlePaddle Authors. All Rights Reserve.
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. IF(WITH_TESTING)
  15. INCLUDE(GNUInstallDirs)
  16. INCLUDE(ExternalProject)
  17. SET(GTEST_PREFIX_DIR ${THIRD_PARTY_PATH}/gtest)
  18. SET(GTEST_INSTALL_DIR ${THIRD_PARTY_PATH}/install/gtest)
  19. SET(GTEST_INCLUDE_DIR "${GTEST_INSTALL_DIR}/include" CACHE PATH "gtest include directory." FORCE)
  20. set(GTEST_REPOSITORY ${GIT_URL}/google/googletest.git)
  21. set(GTEST_TAG release-1.8.1)
  22. INCLUDE_DIRECTORIES(${GTEST_INCLUDE_DIR})
  23. IF(WIN32)
  24. set(GTEST_LIBRARIES
  25. "${GTEST_INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/gtest.lib" CACHE FILEPATH "gtest libraries." FORCE)
  26. set(GTEST_MAIN_LIBRARIES
  27. "${GTEST_INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/gtest_main.lib" CACHE FILEPATH "gtest main libraries." FORCE)
  28. string(REPLACE "/w " "" GTEST_CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
  29. string(REPLACE "/w " "" GTEST_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  30. string(REPLACE "/W0 " "" GTEST_CMAKE_C_FLAGS "${GTEST_CMAKE_C_FLAGS}")
  31. string(REPLACE "/W0 " "" GTEST_CMAKE_CXX_FLAGS "${GTEST_CMAKE_CXX_FLAGS}")
  32. ELSE(WIN32)
  33. set(GTEST_LIBRARIES
  34. "${GTEST_INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libgtest.a" CACHE FILEPATH "gtest libraries." FORCE)
  35. set(GTEST_MAIN_LIBRARIES
  36. "${GTEST_INSTALL_DIR}/${CMAKE_INSTALL_LIBDIR}/libgtest_main.a" CACHE FILEPATH "gtest main libraries." FORCE)
  37. set(GTEST_CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
  38. set(GTEST_CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
  39. ENDIF(WIN32)
  40. ExternalProject_Add(
  41. extern_gtest
  42. ${EXTERNAL_PROJECT_LOG_ARGS}
  43. ${SHALLOW_CLONE}
  44. GIT_REPOSITORY ${GTEST_REPOSITORY}
  45. GIT_TAG ${GTEST_TAG}
  46. PREFIX ${GTEST_PREFIX_DIR}
  47. UPDATE_COMMAND ""
  48. CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
  49. -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
  50. -DCMAKE_CXX_FLAGS=${GTEST_CMAKE_CXX_FLAGS}
  51. -DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE}
  52. -DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG}
  53. -DCMAKE_C_FLAGS=${GTEST_CMAKE_C_FLAGS}
  54. -DCMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}
  55. -DCMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}
  56. -DCMAKE_INSTALL_PREFIX=${GTEST_INSTALL_DIR}
  57. -DCMAKE_POSITION_INDEPENDENT_CODE=ON
  58. -DBUILD_GMOCK=ON
  59. -Dgtest_disable_pthreads=ON
  60. -Dgtest_force_shared_crt=ON
  61. -DCMAKE_BUILD_TYPE=${THIRD_PARTY_BUILD_TYPE}
  62. ${EXTERNAL_OPTIONAL_ARGS}
  63. CMAKE_CACHE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${GTEST_INSTALL_DIR}
  64. -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
  65. -DCMAKE_BUILD_TYPE:STRING=${THIRD_PARTY_BUILD_TYPE}
  66. BUILD_BYPRODUCTS ${GTEST_LIBRARIES}
  67. BUILD_BYPRODUCTS ${GTEST_MAIN_LIBRARIES}
  68. )
  69. ADD_LIBRARY(gtest STATIC IMPORTED GLOBAL)
  70. SET_PROPERTY(TARGET gtest PROPERTY IMPORTED_LOCATION ${GTEST_LIBRARIES})
  71. ADD_DEPENDENCIES(gtest extern_gtest)
  72. ADD_LIBRARY(gtest_main STATIC IMPORTED GLOBAL)
  73. SET_PROPERTY(TARGET gtest_main PROPERTY IMPORTED_LOCATION ${GTEST_MAIN_LIBRARIES})
  74. ADD_DEPENDENCIES(gtest_main extern_gtest)
  75. ENDIF()