1212# See the License for the specific language governing permissions and
1313# limitations under the License.
1414
15- if (BUILD_TESTING)
16- if (NOT TARGET gtest_main)
17- message (STATUS "Dependency: googletest (BUILD_TESTING=${BUILD_TESTING} )" )
15+ include (FetchContent)
16+
17+ FetchContent_Declare(
18+ googletest
19+ GIT_REPOSITORY https://github.com/abseil/googletest
20+ GIT_TAG ed2fe122f8dc9aca844d724986d1d5cf5b65ea4e
21+ )
22+ FetchContent_Declare(
23+ abseil
24+ GIT_REPOSITORY https://github.com/abseil/abseil-cpp
25+ GIT_TAG master
26+ )
27+ FetchContent_Declare(
28+ prometheus
29+ GIT_REPOSITORY https://github.com/jupp0r/prometheus-cpp
30+ GIT_TAG master
31+ )
1832
33+ FetchContent_GetProperties(googletest)
34+ if (BUILD_TESTING)
35+ message (STATUS "Dependency: googletest (BUILD_TESTING=${BUILD_TESTING} )" )
36+
37+ if (NOT googletest_POPULATED)
1938 if ("${CMAKE_CXX_COMPILER_ID} " STREQUAL "MSVC" )
2039 # All the libraries in the build must use either /MD or /MT (runtime
2140 # library to link)
@@ -28,74 +47,26 @@ if(BUILD_TESTING)
2847 "Use shared (DLL) run-time lib even when Google Test is built as static lib."
2948 ON )
3049 endif ()
31-
32- configure_file (${CMAKE_CURRENT_SOURCE_DIR} /cmake/googletest.CMakeLists.txt
33- ${CMAKE_BINARY_DIR} /googletest-download/CMakeLists.txt)
34- execute_process (COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR} " .
35- RESULT_VARIABLE result
36- WORKING_DIRECTORY ${CMAKE_BINARY_DIR} /googletest-download)
37- if (result)
38- message (FATAL_ERROR "CMake step failed: ${result} " )
39- endif ()
40- execute_process (COMMAND ${CMAKE_COMMAND} --build .
41- RESULT_VARIABLE result
42- WORKING_DIRECTORY ${CMAKE_BINARY_DIR} /googletest-download)
43- if (result)
44- message (FATAL_ERROR "Build step failed: ${result} " )
45- endif ()
46-
47- add_subdirectory (${CMAKE_BINARY_DIR} /googletest-src
48- ${CMAKE_BINARY_DIR} /googletest-build EXCLUDE_FROM_ALL )
50+
51+ FetchContent_Populate(googletest)
52+ add_subdirectory (${googletest_SOURCE_DIR} ${googletest_BINARY_DIR} EXCLUDE_FROM_ALL )
4953 endif ()
5054endif ()
5155
52- # Load abseil second, it depends on googletest.
53- if (NOT TARGET absl::base)
54- message (STATUS "Dependency: abseil" )
55-
56- configure_file (${CMAKE_CURRENT_SOURCE_DIR} /cmake/abseil.CMakeLists.txt
57- ${CMAKE_BINARY_DIR} /abseil-download/CMakeLists.txt)
58- execute_process (COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR} " .
59- RESULT_VARIABLE result
60- WORKING_DIRECTORY ${CMAKE_BINARY_DIR} /abseil-download)
61- if (result)
62- message (FATAL_ERROR "CMake step failed: ${result} " )
63- endif ()
64- execute_process (COMMAND ${CMAKE_COMMAND} --build .
65- RESULT_VARIABLE result
66- WORKING_DIRECTORY ${CMAKE_BINARY_DIR} /abseil-download)
67- if (result)
68- message (FATAL_ERROR "Build step failed: ${result} " )
69- endif ()
70-
71- add_subdirectory (${CMAKE_BINARY_DIR} /abseil-src
72- ${CMAKE_BINARY_DIR} /abseil-build EXCLUDE_FROM_ALL )
56+ FetchContent_GetProperties(abseil)
57+ if (NOT abseil_POPULATED)
58+ FetchContent_Populate(abseil)
59+ add_subdirectory (${abseil_SOURCE_DIR} ${abseil_BINARY_DIR} EXCLUDE_FROM_ALL )
7360endif ()
7461
75- if (NOT TARGET prometheus-cpp::core)
76- message (STATUS "Dependency: prometheus-cpp" )
77-
78- configure_file (${CMAKE_CURRENT_SOURCE_DIR} /cmake/prometheus-cpp.CMakeLists.txt
79- ${CMAKE_BINARY_DIR} /prometheus-download/CMakeLists.txt)
80- execute_process (COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR} " .
81- RESULT_VARIABLE result
82- WORKING_DIRECTORY ${CMAKE_BINARY_DIR} /prometheus-download)
83- if (result)
84- message (FATAL_ERROR "CMake step failed: ${result} " )
85- endif ()
86- execute_process (COMMAND ${CMAKE_COMMAND} --build .
87- RESULT_VARIABLE result
88- WORKING_DIRECTORY ${CMAKE_BINARY_DIR} /prometheus-download)
89- if (result)
90- message (FATAL_ERROR "Build step failed: ${result} " )
91- endif ()
92-
62+ FetchContent_GetProperties(prometheus)
63+ if (NOT prometheus_POPULATED)
9364 set (ENABLE_PUSH OFF CACHE BOOL "Build prometheus-cpp push library" FORCE)
9465 set (ENABLE_PULL OFF CACHE BOOL "Build prometheus-cpp pull library" FORCE)
9566 set (ENABLE_COMPRESSION OFF
9667 CACHE BOOL "Enable gzip compression for prometheus-cpp"
9768 FORCE)
9869 set (ENABLE_TESTING OFF CACHE BOOL "Build test for prometheus-cpp" FORCE)
99- add_subdirectory ( ${CMAKE_BINARY_DIR} / prometheus-src
100- ${CMAKE_BINARY_DIR} /prometheus- build EXCLUDE_FROM_ALL )
70+ FetchContent_Populate( prometheus)
71+ add_subdirectory ( ${prometheus_SOURCE_DIR} ${prometheus_BINARY_DIR} EXCLUDE_FROM_ALL )
10172endif ()
0 commit comments