1cmake_minimum_required(VERSION 2.8.12) 2 3project(googletest-download NONE) 4 5# Enable ExternalProject CMake module 6include(ExternalProject) 7 8option(ALLOW_DOWNLOADING_GOOGLETEST "If googletest src tree is not found in location specified by GOOGLETEST_PATH, do fetch the archive from internet" OFF) 9set(GOOGLETEST_PATH "/usr/src/googletest" CACHE PATH 10 "Path to the googletest root tree. Should contain googletest and googlemock subdirs. And CMakeLists.txt in root, and in both of these subdirs") 11 12# Download and install GoogleTest 13 14message(STATUS "Looking for Google Test sources") 15message(STATUS "Looking for Google Test sources in ${GOOGLETEST_PATH}") 16if(EXISTS "${GOOGLETEST_PATH}" AND IS_DIRECTORY "${GOOGLETEST_PATH}" AND EXISTS "${GOOGLETEST_PATH}/CMakeLists.txt" AND 17 EXISTS "${GOOGLETEST_PATH}/googletest" AND IS_DIRECTORY "${GOOGLETEST_PATH}/googletest" AND EXISTS "${GOOGLETEST_PATH}/googletest/CMakeLists.txt" AND 18 EXISTS "${GOOGLETEST_PATH}/googlemock" AND IS_DIRECTORY "${GOOGLETEST_PATH}/googlemock" AND EXISTS "${GOOGLETEST_PATH}/googlemock/CMakeLists.txt") 19 message(STATUS "Found Google Test in ${GOOGLETEST_PATH}") 20 21 ExternalProject_Add( 22 googletest 23 PREFIX "${CMAKE_BINARY_DIR}" 24 DOWNLOAD_DIR "${CMAKE_BINARY_DIR}/download" 25 SOURCE_DIR "${GOOGLETEST_PATH}" # use existing src dir. 26 BINARY_DIR "${CMAKE_BINARY_DIR}/build" 27 CONFIGURE_COMMAND "" 28 BUILD_COMMAND "" 29 INSTALL_COMMAND "" 30 TEST_COMMAND "" 31 ) 32else() 33 if(NOT ALLOW_DOWNLOADING_GOOGLETEST) 34 message(SEND_ERROR "Did not find Google Test sources! Either pass correct path in GOOGLETEST_PATH, or enable BENCHMARK_DOWNLOAD_DEPENDENCIES, or disable BENCHMARK_ENABLE_GTEST_TESTS / BENCHMARK_ENABLE_TESTING.") 35 else() 36 message(WARNING "Did not find Google Test sources! Fetching from web...") 37 ExternalProject_Add( 38 googletest 39 GIT_REPOSITORY https://github.com/google/googletest.git 40 GIT_TAG master 41 PREFIX "${CMAKE_BINARY_DIR}" 42 STAMP_DIR "${CMAKE_BINARY_DIR}/stamp" 43 DOWNLOAD_DIR "${CMAKE_BINARY_DIR}/download" 44 SOURCE_DIR "${CMAKE_BINARY_DIR}/src" 45 BINARY_DIR "${CMAKE_BINARY_DIR}/build" 46 CONFIGURE_COMMAND "" 47 BUILD_COMMAND "" 48 INSTALL_COMMAND "" 49 TEST_COMMAND "" 50 ) 51 endif() 52endif() 53 54ExternalProject_Get_Property(googletest SOURCE_DIR BINARY_DIR) 55file(WRITE googletest-paths.cmake 56"set(GOOGLETEST_SOURCE_DIR \"${SOURCE_DIR}\") 57set(GOOGLETEST_BINARY_DIR \"${BINARY_DIR}\") 58") 59