summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: 3931ec5ab30fec1acad47894d60612cf7eb1ab7b (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
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**~~"
)