-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
104 lines (85 loc) · 3.45 KB
/
CMakeLists.txt
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# copyright 2023-11-18 skylanwei
cmake_minimum_required(VERSION 3.14)
project(trpc_template_server C CXX)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_BUILD_TYPE DEBUG)
include(FetchContent)
set(TRPC_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/framework/trpc-cpp/)
set(TRPC_CPP_GIT_URL https://github.com/city-invoker/trpc-cpp.git)
set(TRPC_CPP_GIT_TAG v1.0.0)
FetchContent_Declare(
trpc-cpp
GIT_REPOSITORY ${TRPC_CPP_GIT_URL}
GIT_TAG ${TRPC_CPP_GIT_TAG}
SOURCE_DIR ${TRPC_ROOT_PATH}
)
set(OPTL_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/plugins/cpp-telemetry-opentelemetry/)
set(OPTL_GIT_URL https://github.com/city-invoker/cpp-telemetry-opentelemetry.git)
set(OPTL_GIT_TAG v1.0.0)
FetchContent_Declare(
cpp-telemetry-opentelemetry
GIT_REPOSITORY ${OPTL_GIT_URL}
GIT_TAG ${OPTL_GIT_TAG}
SOURCE_DIR ${OPTL_ROOT_PATH}
)
set(PROTOS_GIT_URL https://github.com/city-invoker/protos.git)
set(PROTOS_GIT_TAG dev_version_1.0.0)
FetchContent_Declare(
protos
GIT_REPOSITORY ${PROTOS_GIT_URL}
GIT_TAG ${PROTOS_GIT_TAG}
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/protos/
)
set(COMMON_GIT_URL https://github.com/city-invoker/common.git)
set(COMMON_GIT_TAG dev_version_1.0.0)
FetchContent_Declare(
common
GIT_REPOSITORY ${COMMON_GIT_URL}
GIT_TAG ${COMMON_GIT_TAG}
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/common/
)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-sign-compare -Wno-error=maybe-uninitialized")
if (NOT trpc-cpp_POPULATED)
message("fetch content and make available trpc-cpp from git...")
FetchContent_MakeAvailable(trpc-cpp)
endif()
if (NOT cpp-telemetry-opentelemetry_POPULATED)
message("fetch content and make available cpp-telemetry-opentelemetry from git...")
FetchContent_MakeAvailable(cpp-telemetry-opentelemetry)
endif()
if (NOT protos_POPULATED)
message("fetch content and make available protos from git...")
FetchContent_MakeAvailable(protos)
endif()
if (NOT common_POPULATED)
message("fetch content and make available common from git...")
FetchContent_MakeAvailable(common)
endif()
include(${TRPC_ROOT_PATH}/cmake/config/trpc_config.cmake)
include(${TRPC_ROOT_PATH}/cmake/tools/trpc_utils.cmake)
# target *.cc
set(TARGET trpc_template_server)
file(GLOB_RECURSE SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/common/*.cc
${CMAKE_CURRENT_SOURCE_DIR}/protos/*.cc
${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc
${CMAKE_CURRENT_SOURCE_DIR}/trpc_template_server.cc
${CMAKE_CURRENT_SOURCE_DIR}/trpc_template_service.cc
)
file(GLOB_RECURSE TEST_FILES ${CMAKE_CURRENT_SOURCE_DIR}/common/*test.cc
${CMAKE_CURRENT_SOURCE_DIR}/protos/*test.cc
${CMAKE_CURRENT_SOURCE_DIR}/src/*test.cc
)
list(REMOVE_ITEM SRC_FILES ${TEST_FILES})
add_executable(${TARGET} ${SRC_FILES})
target_include_directories(${TARGET} PUBLIC ${INCLUDE_PATHS})
## linking
set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin/")
set(TARGET_LINK_PATHS ${TARGET_LINK_PATHS} ${LIBRARY_PATHS})
target_link_directories(${TARGET} PUBLIC ${TARGET_LINK_PATHS})
set(TARGET_LINK_LIBS ${TARGET_LINK_LIBS}
trpc
trpc_cpp_plugin_telemetry_opentelemetry
trpc_opentelemetry_proto
)
target_link_libraries(${TARGET} ${TARGET_LINK_LIBS})