Skip to content
This repository was archived by the owner on Jul 31, 2023. It is now read-only.

Commit 1694350

Browse files
committed
CMake: Replace ExternalProject_Add with FetchContent
1 parent 03dff03 commit 1694350

File tree

5 files changed

+35
-160
lines changed

5 files changed

+35
-160
lines changed

CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
cmake_minimum_required(VERSION 3.5)
15+
cmake_minimum_required(VERSION 3.11)
1616

1717
# Use ccache if it's present.
1818
find_program(CCACHE_PROGRAM ccache)
@@ -30,6 +30,7 @@ include(CTest) # Defines option BUILD_TESTING.
3030
enable_testing()
3131

3232
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
33+
3334
include(OpenCensusDeps)
3435

3536
include(OpenCensusHelpers)

cmake/OpenCensusDeps.cmake

Lines changed: 33 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,29 @@
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()
5054
endif()
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)
7360
endif()
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)
10172
endif()

cmake/abseil.CMakeLists.txt

Lines changed: 0 additions & 31 deletions
This file was deleted.

cmake/googletest.CMakeLists.txt

Lines changed: 0 additions & 35 deletions
This file was deleted.

cmake/prometheus-cpp.CMakeLists.txt

Lines changed: 0 additions & 31 deletions
This file was deleted.

0 commit comments

Comments
 (0)