-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
167 lines (135 loc) · 4.32 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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
cmake_minimum_required(VERSION 3.16)
# Sets project name
project(ocean LANGUAGES CXX C)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
# Sets C++ standard
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Specifies required Qt components
find_package(Qt6 REQUIRED COMPONENTS Core)
find_package(Qt6 REQUIRED COMPONENTS Concurrent)
find_package(Qt6 REQUIRED COMPONENTS Xml)
find_package(Qt6 REQUIRED COMPONENTS Widgets)
find_package(Qt6 REQUIRED COMPONENTS OpenGL)
find_package(Qt6 REQUIRED COMPONENTS OpenGLWidgets)
find_package(Qt6 REQUIRED COMPONENTS Gui)
# Allows you to include files from within those directories, without prefixing their filepaths
include_directories(src)
include_directories(libs)
# Specifies .cpp and .h files to be passed to the compiler
add_executable(${PROJECT_NAME}
src/main.cpp
src/mainwindow.cpp
src/arap.cpp
src/glwidget.cpp
src/graphics/camera.cpp
src/graphics/graphicsdebug.cpp
src/graphics/meshloader.cpp
src/graphics/shader.cpp
src/graphics/shape.cpp
# src/graphics/simpleshape.cpp
# src/graphics/oceanshape.cpp
src/mainwindow.h
src/arap.h
src/glwidget.h
src/graphics/camera.h
src/graphics/graphicsdebug.h
src/graphics/meshloader.h
src/graphics/shader.h
src/graphics/shape.h
# src/graphics/simpleshape.h
# src/graphics/oceanshape.h
util/tiny_obj_loader.h
util/unsupportedeigenthing/OpenGLSupport
src/ocean/ocean.h
src/ocean/ocean.cpp
src/ocean/ocean_alt.h src/ocean/ocean_alt.cpp
src/ocean/halftone.h src/ocean/halftone.cpp
src/skybox.h src/skybox.cpp
src/particlesystem.h src/particlesystem.cpp
)
# GLEW: this creates its library and allows you to `#include "GL/glew.h"`
add_library(StaticGLEW STATIC glew/src/glew.c)
include_directories(${PROJECT_NAME} PRIVATE glew/include)
# Specifies libraries to be linked (Qt components, glew, etc)
target_link_libraries(${PROJECT_NAME} PRIVATE
Qt::Concurrent
Qt::Core
Qt::Gui
Qt::OpenGL
Qt::OpenGLWidgets
Qt::Widgets
Qt::Xml
StaticGLEW
)
# This allows you to `#include "Eigen/..."`
target_include_directories(${PROJECT_NAME} PRIVATE
Eigen
)
# Specifies other files
qt6_add_resources(${PROJECT_NAME} "Resources"
PREFIX
"/"
FILES
resources/images/uv1.png
resources/images/kitten.png
resources/images/hello.png
resources/images/sand_text.jpg
resources/images/caustic_sample.jpg
resources/images/anamorphic.jpg
resources/images/daniel.jpg
resources/images/sky_clouds.png
resources/images/halftone.png
# resources/images/ground.png
resources/shaders/shader.frag
resources/shaders/shader.vert
resources/shaders/anchorPoint.vert
resources/shaders/anchorPoint.geom
resources/shaders/anchorPoint.frag
resources/shaders/texture.vert
resources/shaders/texture.frag
resources/shaders/color.vert
resources/shaders/color.frag
resources/shaders/foam.frag
resources/shaders/foam.vert
resources/shaders/skybox.frag
resources/shaders/skybox.vert
resources/images/cupertin-lake_rt.png
resources/images/cupertin-lake_lf.png
resources/images/cupertin-lake_up.png
resources/images/cupertin-lake_dn.png
resources/images/cupertin-lake_bk.png
resources/images/cupertin-lake_ft.png
resources/images/halftone.png
resources/images/foam3.png
resources/images/particle.png
resources/images/nx.png
resources/images/ny.png
resources/images/nz.png
resources/images/px.png
resources/images/py.png
resources/images/pz.png
resources/shaders/caustics.vert
resources/shaders/caustics.frag
resources/shaders/particles.vert
resources/shaders/particles.frag
)
# GLEW: this provides support for Windows (including 64-bit)
if (WIN32)
add_compile_definitions(GLEW_STATIC)
target_link_libraries(${PROJECT_NAME} PRIVATE
opengl32
glu32
)
endif()
# Set this flag to silence warnings on Windows
if (MSVC OR MSYS OR MINGW)
set(CMAKE_CXX_FLAGS "-Wno-volatile")
endif()
# Set this flag to silence warnings on MacOS
if (APPLE)
set(CMAKE_CXX_FLAGS "-Wno-deprecated-volatile")
endif()