-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
130 lines (110 loc) · 3.24 KB
/
CMakeLists.txt
File metadata and controls
130 lines (110 loc) · 3.24 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
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
################# CONFIG ##################
#init Cmake
cmake_minimum_required(VERSION 3.25)
project(Explorer400D LANGUAGES CXX VERSION 0.1)
## Set project properties
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_FLAGS "-Wall -Wextra")
############## DEPENDENCIES ###############
## Find dependencies
find_package(OpenGL REQUIRED)
find_package(glfw3 REQUIRED)
find_library(GPHOTO2PP gphoto2pp)
find_library(CURLPP curlpp)
find_library(RAW raw)
find_library(SQLITE3 sqlite3)
include(FetchContent)
FetchContent_Declare(json URL https://github.com/nlohmann/json/releases/download/v3.11.2/json.tar.xz)
FetchContent_MakeAvailable(json)
## Include ImGui "libray"
set(IMGUI_DIR lib/imgui)
include_directories(${IMGUI_DIR})
list(APPEND IMGUI
${IMGUI_DIR}/imgui_demo.cpp
${IMGUI_DIR}/imgui_draw.cpp
${IMGUI_DIR}/imgui_impl_glfw.cpp
${IMGUI_DIR}/imgui_impl_opengl3.cpp
${IMGUI_DIR}/imgui_tables.cpp
${IMGUI_DIR}/imgui_widgets.cpp
${IMGUI_DIR}/imgui.cpp
)
## Include ImPlot "libray"
set(IMGUIPLOT_DIR lib/implot)
include_directories(${IMGUIPLOT_DIR})
list(APPEND IMGUI
${IMGUIPLOT_DIR}/implot.cpp
${IMGUIPLOT_DIR}/implot_demo.cpp
${IMGUIPLOT_DIR}/implot_items.cpp
)
## Include ImGuiFileDialog "libray"
set(ImGuiFileDialog_DIR lib/ImGuiFileDialog)
include_directories(${ImGuiFileDialog_DIR})
list(APPEND IMGUI
${ImGuiFileDialog_DIR}/ImGuiFileDialog.cpp
)
## Include dirent "libray" if on Windows
if(WIN32)
set(DIRENT_DIR lib/dirent)
include_directories(${DIRENT_DIR})
endif()
## Include stb "libray" (used by ImGuiFileDialog and for Explorer400D)
set(STB_DIR lib/stb)
include_directories(${STB_DIR})
## Include libevent
list(APPEND EXTRA_LIBS
-levent
)
################## BUILD ##################
## Set executable name
set(EXEC Explorer400D)
## Set root path
set(EXEC_ROOT src/)
## Include directories
include_directories(
${EXEC_ROOT}/CameraManager
${EXEC_ROOT}/Console
${EXEC_ROOT}/Exception
${EXEC_ROOT}/Frame
${EXEC_ROOT}/ImgLoader
${EXEC_ROOT}/ImgViewer
${EXEC_ROOT}/Moon
${EXEC_ROOT}/Screen
${EXEC_ROOT}/Settings
${EXEC_ROOT}/Weather
${EXEC_ROOT}/WebFetch
${EXEC_ROOT}/
)
## List source files
set(EXEC_SRC
${EXEC_ROOT}/CameraManager/CameraManager.cpp
${EXEC_ROOT}/Console/Console.cpp
${EXEC_ROOT}/Exception/Exception.cpp
${EXEC_ROOT}/Frame/Frame.cpp
${EXEC_ROOT}/ImgLoader/ImgLoader.cpp
${EXEC_ROOT}/ImgViewer/ImgViewer.cpp
${EXEC_ROOT}/Moon/Moon.cpp
${EXEC_ROOT}/Screen/Screen.cpp
${EXEC_ROOT}/Settings/Settings.cpp
${EXEC_ROOT}/Weather/Weather.cpp
${EXEC_ROOT}/WebFetch/WebFetch.cpp
${EXEC_ROOT}/Explorer400D.cpp
)
## Create executable
add_executable(${EXEC} ${IMGUI} ${EXEC_SRC})
## Link libraries - TODO: Check all install actions
target_link_libraries(${EXEC}
OpenGL
glfw
nlohmann_json::nlohmann_json
${GPHOTO2PP} -lgphoto2pp -lgphoto2
${CURLPP} -lcurlpp -lcurl
${RAW} -lraw -fopenmp -llcms2
${SQLITE3} -lsqlite3
${EXTRA_LIBS}
)
## Set output directory
set_target_properties(${EXEC} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR})
set_target_properties(${EXEC} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_SOURCE_DIR})
## Install executable
install(TARGETS ${EXEC})