-
Notifications
You must be signed in to change notification settings - Fork 48
Expand file tree
/
Copy pathGoogleTest.cmake
More file actions
78 lines (68 loc) · 2.87 KB
/
Copy pathGoogleTest.cmake
File metadata and controls
78 lines (68 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
find_package(Threads REQUIRED)
include(ExternalProject)
set(GTEST_LIBRARY_PATH
"$ENV{GTEST_LIBRARY_PATH}" CACHE PATH
"Library path in existing installation of gtest")
set(GTEST_INCLUDE_PATH
"$ENV{GTEST_INCLUDE_PATH}" CACHE PATH
"Include path in existing installation of gtest")
set(LIBPREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}")
set(LIBSUFFIX "${CMAKE_STATIC_LIBRARY_SUFFIX}")
if (NOT "${GTEST_LIBRARY_PATH}" STREQUAL "" AND
NOT "${GTEST_INCLUDE_PATH}" STREQUAL "")
# Location of existing gtest installation has been specified:
set(GTEST_INCLUDES "${GTEST_INCLUDE_PATH}")
set(GTEST_LIBRARY "${GTEST_LIBRARY_PATH}/${LIBPREFIX}gtest${LIBSUFFIX}")
set(GTEST_MAINLIB "${GTEST_LIBRARY_PATH}/${LIBPREFIX}gtest_main${LIBSUFFIX}")
message(STATUS "Using existing installation of GTest")
message(STATUS "gtest include path: " ${GTEST_INCLUDES})
message(STATUS "gtest library path: " ${GTEST_LIBRARY})
message(STATUS "gtest_main library path: " ${GTEST_MAINLIB})
add_library(GTest IMPORTED STATIC GLOBAL)
set_target_properties(
GTest
PROPERTIES
IMPORTED_LOCATION "${GTEST_LIBRARY}"
IMPORTED_LINK_INTERFACE_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
add_library(GTestMain IMPORTED STATIC GLOBAL)
set_target_properties(
GTestMain
PROPERTIES
IMPORTED_LOCATION "${GTEST_MAINLIB}"
IMPORTED_LINK_INTERFACE_LIBRARIES "${GTEST_LIBRARY};${CMAKE_THREAD_LIBS_INIT}")
else()
# Download gtest from official github repository:
message(STATUS "Downloading GTest from official repository")
set(GTEST_PREFIX "${CMAKE_BINARY_DIR}/gtest")
ExternalProject_Add(
GTestExternal
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG master
TIMEOUT 10
PREFIX "${GTEST_PREFIX}"
CMAKE_ARGS "-DCMAKE_C_COMPILER:string=${CMAKE_C_COMPILER};-DCMAKE_CXX_COMPILER:string=${CMAKE_CXX_COMPILER}"
INSTALL_COMMAND ""
# Wrap download, configure and build steps in a script to log output
LOG_DOWNLOAD ON
LOG_CONFIGURE ON
LOG_BUILD OFF
)
set(GTEST_LOCATION "${GTEST_PREFIX}/src/GTestExternal-build/googlemock/gtest")
set(GTEST_INCLUDES "${GTEST_PREFIX}/src/GTestExternal/googletest/include")
set(GTEST_LIBRARY "${GTEST_LOCATION}/${LIBPREFIX}gtest${LIBSUFFIX}")
set(GTEST_MAINLIB "${GTEST_LOCATION}/${LIBPREFIX}gtest_main${LIBSUFFIX}")
add_library(GTest IMPORTED STATIC GLOBAL)
set_target_properties(
GTest
PROPERTIES
IMPORTED_LOCATION "${GTEST_LIBRARY}"
IMPORTED_LINK_INTERFACE_LIBRARIES "${CMAKE_THREAD_LIBS_INIT}")
add_dependencies(GTest GTestExternal)
add_library(GTestMain IMPORTED STATIC GLOBAL)
set_target_properties(
GTestMain
PROPERTIES
IMPORTED_LOCATION "${GTEST_MAINLIB}"
IMPORTED_LINK_INTERFACE_LIBRARIES "${GTEST_LIBRARY};${CMAKE_THREAD_LIBS_INIT}")
add_dependencies(GTestMain GTestExternal)
endif()