summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authornavewindre <boneyaard@gmail.com>2025-09-03 20:10:09 +0200
committernavewindre <boneyaard@gmail.com>2025-09-03 20:10:09 +0200
commitf8b92ce3aa08b1445c9f956d8166830946562d12 (patch)
tree94e63a5aec9f8f52b577f56799e0c9201fd976a5 /CMakeLists.txt
a
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt47
1 files changed, 47 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..3931ec5
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,47 @@
+cmake_minimum_required(VERSION 3.10)
+
+project(videogame)
+set(CMAKE_CXX_COMPILER "clang++")
+set(CMAKE_CXX_STANDARD 17)
+
+file(GLOB_RECURSE SRC_FILES ./src/*.cpp ./src/game/*.cpp ./src/util/config/*.cpp)
+
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build)
+add_executable(app ${SRC_FILES})
+
+find_package(PkgConfig REQUIRED)
+pkg_check_modules(GL REQUIRED gl)
+pkg_check_modules(SDL2 REQUIRED sdl2)
+pkg_check_modules(FREETYPE REQUIRED freetype2)
+
+target_compile_options(app PRIVATE -Wall)
+target_include_directories(app PRIVATE
+ ${SDL2_INCLUDE_DIRS}
+ ${FREETYPE_INCLUDE_DIRS}
+ ${GL_INCLUDE_DIRS}
+)
+target_link_libraries(app PRIVATE
+ ${SDL2_LIBRARIES}
+ ${FREETYPE_LIBRARIES}
+ ${GL_LIBRARIES}
+)
+
+# release build settings
+set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wno-nontrivial-memcall")
+# debug build settings
+set(CMAKE_CXX_FLAGS_DEBUG "-g -DDEBUG=1 -fsanitize=address -Wno-nontrivial-memcall")
+
+add_custom_target(debug
+ COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_BINARY_DIR}
+ COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ COMMENT "Building ~~**DEBUG**~~"
+)
+add_custom_target(release
+ COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release ${CMAKE_BINARY_DIR}
+ COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}
+ WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+ COMMENT "Building ~~**RELEASE**~~"
+)
+