blob: e99269a14f94ebc3304d3f4a9f7be1778224949a (
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
|
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)
if(UNIX)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build)
else()
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
endif()
add_executable(app ${SRC_FILES})
find_package(PkgConfig REQUIRED)
pkg_check_modules(SDL2 REQUIRED sdl2)
pkg_check_modules(FREETYPE REQUIRED freetype2)
pkg_check_modules(GLEW REQUIRED glew)
find_package(OpenGL REQUIRED)
target_compile_options(app PRIVATE -Wall)
target_include_directories(app PRIVATE
${SDL2_INCLUDE_DIRS}
${FREETYPE_INCLUDE_DIRS}
${GLEW_INCLUDE_DIRS}
${OPENGL_INCLUDE_DIR}
)
# Platform-specific linking
if(WIN32)
target_link_libraries(app PRIVATE
${SDL2_LIBRARIES}
${FREETYPE_LIBRARIES}
${GLEW_LIBRARIES}
${OPENGL_LIBRARIES}
winmm # For timeGetDevCaps, timeBeginPeriod, timeEndPeriod
)
else()
target_link_libraries(app PRIVATE
${SDL2_LIBRARIES}
${FREETYPE_LIBRARIES}
${GLEW_LIBRARIES}
${OPENGL_LIBRARIES}
)
endif()
# 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**~~"
)
|