-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
140 lines (124 loc) · 3.01 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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
cmake_minimum_required(VERSION 3.30)
project(qt_visualizer)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
set(ABSL_PROPAGATE_CXX_STD ON)
find_package(Qt6 REQUIRED COMPONENTS Charts Core Gui Qml Quick)
include(FetchContent)
# Abseil
FetchContent_Declare(
abseil
GIT_REPOSITORY https://github.com/abseil/abseil-cpp.git
GIT_TAG 20240722.1
)
FetchContent_MakeAvailable(abseil)
# GoogleTest
FetchContent_Declare(
googletest
URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
)
FetchContent_MakeAvailable(googletest)
# GFlags
FetchContent_Declare(
gflags
GIT_REPOSITORY https://github.com/gflags/gflags.git
GIT_TAG v2.2.2
)
FetchContent_MakeAvailable(gflags)
# Glog (depends on gflags)
FetchContent_Declare(
glog
GIT_REPOSITORY https://github.com/google/glog.git
GIT_TAG v0.7.1
)
FetchContent_MakeAvailable(glog)
# Ensure GFlags and Glog are properly included
set(CMAKE_PREFIX_PATH "${gflags_SOURCE_DIR}" ${CMAKE_PREFIX_PATH})
set(gflags_DIR "${gflags_SOURCE_DIR}")
set(glog_DIR "${glog_SOURCE_DIR}")
find_package(Protobuf REQUIRED)
message(STATUS "Using Protobuf ${Protobuf_VERSION}")
add_subdirectory(proto)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(${Protobuf_INCCLUDE_DIRS})
# Application
add_executable(qt_visualizer
main.cpp resources.qrc
plot_data_model.cpp plot_data_model.h
)
target_link_libraries(qt_visualizer PRIVATE
absl::base
absl::strings
absl::flat_hash_map
absl::status
glog::glog
gflags
Qt6::Charts
Qt6::Core
Qt6::Gui
Qt6::Qml
Qt6::Quick
GTest::gtest
GTest::gtest_main
proto
proto_utils
plot_data_model
udp_receiver
${Protobuf_LIBRARIES}
)
add_library(plot_data_model
plot_data_model.h
plot_data_model.cpp
)
target_link_libraries(plot_data_model
Qt6::Core
Qt6::Qml
)
add_library(udp_receiver
udp_receiver.h
udp_receiver.cpp
)
target_link_libraries(udp_receiver PRIVATE
Qt6::Core
absl::status
plot_data_model
glog
proto_utils
)
add_library(proto_utils
proto_utils.h
proto_utils.cpp
)
target_link_libraries(proto_utils
proto
absl::statusor
absl::strings
${Protobuf_LIBRARIES}
)
# Tests
enable_testing()
add_executable(test_runner
proto_utils_test.cpp)
target_link_libraries(test_runner PRIVATE
GTest::gtest_main
GTest::gtest
GTest::gmock
glog
proto_utils
udp_receiver
absl::status
)
add_test(NAME test_runner COMMAND test_runner)
# Smoke Test
add_executable(smoke_test_main smoke_test_main.cpp)
target_link_libraries(smoke_test_main PRIVATE
absl::base
absl::strings
absl::flags
absl::flags_parse
absl::status
glog::glog
proto_utils
)