summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: ad833bcbeb811db9b844040f8405187315b9fcf6 (plain)
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()