AddGTest.cmake 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. find_package(Threads REQUIRED)
  2. include(ExternalProject)
  3. if(MSYS OR MINGW)
  4. set(DISABLE_PTHREADS ON)
  5. else()
  6. set(DISABLE_PTHREADS OFF)
  7. endif()
  8. if (MSVC)
  9. set(RELEASE_LIB_DIR ReleaseLibs)
  10. set(DEBUG_LIB_DIR DebugLibs)
  11. elseif(XCODE_VERSION)
  12. set(RELEASE_LIB_DIR Release)
  13. set(DEBUG_LIB_DIR Debug)
  14. else()
  15. set(RELEASE_LIB_DIR "")
  16. set(DEBUG_LIB_DIR "")
  17. endif()
  18. set(GTEST_CMAKE_ARGS
  19. "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
  20. "-Dgtest_force_shared_crt=ON"
  21. "-Dgtest_disable_pthreads:BOOL=${DISABLE_PTHREADS}"
  22. "-DBUILD_GTEST=ON")
  23. set(GTEST_RELEASE_LIB_DIR "")
  24. set(GTEST_DEBUGLIB_DIR "")
  25. if (MSVC)
  26. set(GTEST_CMAKE_ARGS ${GTEST_CMAKE_ARGS}
  27. "-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=${DEBUG_LIB_DIR}"
  28. "-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=${RELEASE_LIB_DIR}")
  29. set(GTEST_LIB_DIR)
  30. endif()
  31. set(GTEST_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/gtest")
  32. # try to find git - if found, setup gtest
  33. find_package(Git)
  34. if(NOT GIT_FOUND)
  35. set(AddGTest_FOUND false CACHE BOOL "Was gtest setup correctly?")
  36. else(NOT GIT_FOUND)
  37. set(AddGTest_FOUND true CACHE BOOL "Was gtest setup correctly?")
  38. ExternalProject_Add(gtest
  39. GIT_REPOSITORY https://github.com/google/googletest.git
  40. TIMEOUT 10
  41. PREFIX "${GTEST_PREFIX}"
  42. CMAKE_ARGS "${GTEST_CMAKE_ARGS}"
  43. LOG_DOWNLOAD ON
  44. LOG_CONFIGURE ON
  45. LOG_BUILD ON
  46. # Disable install
  47. INSTALL_COMMAND ""
  48. )
  49. set(LIB_PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}")
  50. set(LIB_SUFFIX "${CMAKE_STATIC_LIBRARY_SUFFIX}")
  51. set(GTEST_LOCATION "${GTEST_PREFIX}/src/gtest-build")
  52. set(GTEST_DEBUG_LIBRARIES
  53. "${LIB_PREFIX}gtest${LIB_SUFFIX}"
  54. "${CMAKE_THREAD_LIBS_INIT}")
  55. SET(GTEST_RELEASE_LIBRARIES
  56. "${LIB_PREFIX}gtest${LIB_SUFFIX}"
  57. "${CMAKE_THREAD_LIBS_INIT}")
  58. if(MSVC_VERSION EQUAL 1700)
  59. add_definitions(-D_VARIADIC_MAX=10)
  60. endif()
  61. ExternalProject_Get_Property(gtest source_dir)
  62. include_directories(${source_dir}/googletest/include)
  63. include_directories(${source_dir}/gtest/include)
  64. ExternalProject_Get_Property(gtest binary_dir)
  65. link_directories(${binary_dir}/googlemock/gtest)
  66. link_directories(${binary_dir}/googlemock/gtest/${RELEASE_LIB_DIR})
  67. link_directories(${binary_dir}/googlemock/gtest/${DEBUG_LIB_DIR})
  68. endif(NOT GIT_FOUND)