AddGTest.cmake 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. else()
  12. set(RELEASE_LIB_DIR "")
  13. set(DEBUG_LIB_DIR "")
  14. endif()
  15. set(GTEST_CMAKE_ARGS
  16. "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
  17. "-Dgtest_force_shared_crt=ON"
  18. "-Dgtest_disable_pthreads:BOOL=${DISABLE_PTHREADS}")
  19. set(GTEST_RELEASE_LIB_DIR "")
  20. set(GTEST_DEBUGLIB_DIR "")
  21. if (MSVC)
  22. set(GTEST_CMAKE_ARGS ${GTEST_CMAKE_ARGS}
  23. "-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=${DEBUG_LIB_DIR}"
  24. "-DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=${RELEASE_LIB_DIR}")
  25. set(GTEST_LIB_DIR)
  26. endif()
  27. set(GTEST_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/gtest")
  28. # try to find git - if found, setup gtest
  29. find_package(Git)
  30. if(NOT GIT_FOUND)
  31. set(AddGTest_FOUND false CACHE BOOL "Was gtest setup correctly?")
  32. else(NOT GIT_FOUND)
  33. set(AddGTest_FOUND true CACHE BOOL "Was gtest setup correctly?")
  34. ExternalProject_Add(gtest
  35. GIT_REPOSITORY https://chromium.googlesource.com/external/googletest
  36. TIMEOUT 10
  37. PREFIX "${GTEST_PREFIX}"
  38. CMAKE_ARGS "${GTEST_CMAKE_ARGS}"
  39. LOG_DOWNLOAD ON
  40. LOG_CONFIGURE ON
  41. LOG_BUILD ON
  42. # Disable install
  43. INSTALL_COMMAND ""
  44. )
  45. set(LIB_PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}")
  46. set(LIB_SUFFIX "${CMAKE_STATIC_LIBRARY_SUFFIX}")
  47. set(GTEST_LOCATION "${GTEST_PREFIX}/src/gtest-build")
  48. set(GTEST_DEBUG_LIBRARIES
  49. "${GTEST_LOCATION}/${DEBUG_LIB_DIR}/${LIB_PREFIX}gtest${LIB_SUFFIX}"
  50. "${CMAKE_THREAD_LIBS_INIT}")
  51. SET(GTEST_RELEASE_LIBRARIES
  52. "${GTEST_LOCATION}/${RELEASE_LIB_DIR}/${LIB_PREFIX}gtest${LIB_SUFFIX}"
  53. "${CMAKE_THREAD_LIBS_INIT}")
  54. if(MSVC_VERSION EQUAL 1700)
  55. add_definitions(-D_VARIADIC_MAX=10)
  56. endif()
  57. ExternalProject_Get_Property(gtest source_dir)
  58. include_directories(${source_dir}/include)
  59. include_directories(${source_dir}/gtest/include)
  60. ExternalProject_Get_Property(gtest binary_dir)
  61. link_directories(${binary_dir})
  62. endif(NOT GIT_FOUND)