DownloadGTest.cmake 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. # Integrates googletest at configure time. Based on the instructions at
  2. # https://github.com/google/googletest/tree/master/googletest#incorporating-into-an-existing-cmake-project
  3. # Set up the external googletest project, downloading the latest from Github
  4. # master if requested.
  5. configure_file(
  6. ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt.in
  7. ${CMAKE_BINARY_DIR}/googletest-external/CMakeLists.txt
  8. )
  9. set(ABSL_SAVE_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
  10. set(ABSL_SAVE_CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
  11. if (BUILD_SHARED_LIBS)
  12. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
  13. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGTEST_CREATE_SHARED_LIBRARY=1")
  14. endif()
  15. # Configure and build the googletest source.
  16. execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
  17. RESULT_VARIABLE result
  18. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-external )
  19. if(result)
  20. message(FATAL_ERROR "CMake step for googletest failed: ${result}")
  21. endif()
  22. execute_process(COMMAND ${CMAKE_COMMAND} --build .
  23. RESULT_VARIABLE result
  24. WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-external)
  25. if(result)
  26. message(FATAL_ERROR "Build step for googletest failed: ${result}")
  27. endif()
  28. set(CMAKE_CXX_FLAGS ${ABSL_SAVE_CMAKE_CXX_FLAGS})
  29. set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ABSL_SAVE_CMAKE_RUNTIME_OUTPUT_DIRECTORY})
  30. # Prevent overriding the parent project's compiler/linker settings on Windows
  31. set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
  32. # Add googletest directly to our build. This defines the gtest and gtest_main
  33. # targets.
  34. add_subdirectory(${absl_gtest_src_dir} ${absl_gtest_build_dir} EXCLUDE_FROM_ALL)