-
Notifications
You must be signed in to change notification settings - Fork 1
/
CMakeLists.txt
90 lines (75 loc) · 2.87 KB
/
CMakeLists.txt
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
cmake_minimum_required(VERSION 3.12)
## PROJECT ##
project(pacman
VERSION 1.0
DESCRIPTION "Advanced Programming in C++ Project"
LANGUAGES CXX)
add_executable(${PROJECT_NAME})
find_package(SDL2 REQUIRED)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20 -Wall -Werror -Wextra -O3")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++20 -Wall -Wextra -O3 -g")
## FILES ##
target_sources(${PROJECT_NAME}
PRIVATE
# Project
src/${PROJECT_NAME}.cpp
# SDL
src/SDL_utils/SDL_utils.cpp
# Utils
src/utils/logger.cpp
# Application
src/app/application.cpp
# Game
src/game/game.cpp
src/game/pac_string.cpp
src/game/path_finder.cpp
src/game/object/object.cpp
src/game/object/cell.cpp
src/game/object/moveable/moveable.cpp
src/game/object/moveable/pac_man.cpp
src/game/object/moveable/ghosts/ghost.cpp
src/game/object/moveable/ghosts/blinky.cpp
src/game/object/moveable/ghosts/clyde.cpp
src/game/object/moveable/ghosts/inky.cpp
src/game/object/moveable/ghosts/pinky.cpp
src/game/object/eatable/eatable.cpp
src/game/object/eatable/gomme.cpp
src/game/object/eatable/super_gomme.cpp
src/game/object/eatable/fruit.cpp
)
target_include_directories(${PROJECT_NAME}
PRIVATE
${SDL2_INCLUDE_DIRS}
include
include/SDL_utils
include/utils
include/app
include/game
include/game/object
include/game/object/moveable
include/game/object/moveable/ghosts
include/game/object/eatable
)
target_compile_definitions(${PROJECT_NAME}
PRIVATE
"SDL_MAIN_HANDLED")
target_link_libraries(${PROJECT_NAME}
PRIVATE
${SDL2_LIBRARIES})
## DOCUMENTATION ##
option(BUILD_DOC "Build documentation" ON)
file(MAKE_DIRECTORY doc)
find_package(Doxygen)
if (DOXYGEN_FOUND)
set(DOXYGEN_IN ../Doxyfile)
message("Doxygen build started")
add_custom_target(doc_doxygen ALL
COMMAND ${DOXYGEN_EXECUTABLE} ${DOXYGEN_IN}
WORKING_DIRECTORY ../doc
COMMENT "Generating API documentation with Doxygen"
VERBATIM)
else (DOXYGEN_FOUND)
message("Doxygen need to be installed to generate the doxygen documentation")
endif (DOXYGEN_FOUND)