summaryrefslogtreecommitdiff
path: root/wave-sim/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'wave-sim/CMakeLists.txt')
-rw-r--r--wave-sim/CMakeLists.txt104
1 files changed, 104 insertions, 0 deletions
diff --git a/wave-sim/CMakeLists.txt b/wave-sim/CMakeLists.txt
new file mode 100644
index 0000000..ce88f92
--- /dev/null
+++ b/wave-sim/CMakeLists.txt
@@ -0,0 +1,104 @@
+cmake_minimum_required(VERSION 3.16)
+
+# Sets project name
+project(wave-sim 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/simulation.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/system.cpp
+
+ src/mainwindow.h
+ src/simulation.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/system.h
+
+ util/tiny_obj_loader.h
+ util/unsupportedeigenthing/OpenGLSupport
+)
+
+# 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/shaders/shader.frag
+ resources/shaders/shader.vert
+ example-meshes/single-tet.mesh
+)
+
+# 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()