-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
157 lines (135 loc) · 3.05 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
project(CatinkAdventures
VERSION 1.0
DESCRIPTION "A Zuma Clone"
LANGUAGES CXX
)
set(CMAKE_CXX_STANDARD 20)
include(./cmake/CPM.cmake)
CPMAddPackage(
NAME SDL2
GITHUB_REPOSITORY libsdl-org/SDL
GIT_TAG release-2.28.5
OPTIONS
"SDL_TEST OFF"
"SDL_SHARED ON"
"SDL_STATIC OFF"
)
CPMAddPackage(
NAME SDL2_image
GITHUB_REPOSITORY libsdl-org/SDL_image
GIT_TAG release-2.8.1
OPTIONS
"SDL2IMAGE_SAMPLES OFF"
"SDL2IMAGE_TESTS OFF"
"SDL2IMAGE_SHARED ON"
"SDL2IMAGE_STATIC OFF"
)
CPMAddPackage(
NAME SDL2_mixer
GITHUB_REPOSITORY libsdl-org/SDL_mixer
GIT_TAG release-2.6.3
OPTIONS
"SDL2MIXER_SAMPLES OFF"
"SDL2MIXER_MIDI OFF"
"SDL2MIXER_FLAC OFF"
"SDL2MIXER_MOD OFF"
"SDL2MIXER_INSTALL OFF"
"SDL2MIXER_SHARED ON"
"SDL2MIXER_STATIC OFF"
)
CPMAddPackage(
NAME SDL2_ttf
GITHUB_REPOSITORY libsdl-org/SDL_ttf
GIT_TAG release-2.20.2
OPTIONS
"SDL2TTF_SAMPLES OFF"
"SDL2TTF_INSTALL OFF"
"SDL2TTF_SHARED ON"
"SDL2TTF_STATIC OFF"
)
CPMAddPackage(
NAME pugixml
GITHUB_REPOSITORY zeux/pugixml
GIT_TAG v1.14
OPTIONS
"PUGIXML_BUILD_TESTS OFF"
"BUILD_SHARED_LIBS ON"
)
set(IS_DEBUG $<BOOL:$<CONFIG:Debug>>)
if (NOT ${IS_DEBUG})
if (APPLE)
set(GUI_TYPE MACOSX_BUNDLE)
elseif (WIN32)
set(GUI_TYPE WIN32)
endif()
else()
if (WIN32)
set(GUI_TYPE "")
endif()
endif()
# generated executable
add_executable(${PROJECT_NAME} ${GUI_TYPE} main.cpp)
# source files for engine and game subdirectories
target_sources(${PROJECT_NAME} PRIVATE
engine/Animation.cpp
engine/Animation.h
engine/AssetManager.cpp
engine/AssetManager.h
engine/basics.cpp
engine/basics.h
engine/common.cpp
engine/common.h
engine/Engine.cpp
engine/Engine.h
engine/EntityManager.h
engine/Sprite.cpp
engine/Sprite.h
engine/Texture.cpp
engine/Texture.h
engine/UI.cpp
engine/UI.h
game/Balls.cpp
game/Balls.h
game/Player.cpp
game/Player.h
game/LevelData.h
engine/SoundManager.h
engine/Fade.h
engine/Audio.h
engine/UIElements/Text.h
engine/UIElements/Button.h
engine/UIElements/FlexContainer.h
)
# find_package(SDL2 REQUIRED)
# find_package(SDL2_image REQUIRED)
# find_package(SDL2_ttf REQUIRED)
# find_package(SDL2_mixer REQUIRED)
# target_include_directories(${PROJECT_NAME} PRIVATE
# ${SDL2_INCLUDE_DIRS}
# ${SDL2_IMAGE_INCLUDE_DIRS}
# ${SDL2_TTF_INCLUDE_DIRS}
# ${SDL2_MIXER_INCLUDE_DIRS}
# ${PUGIXML_INCLUDE_DIRS}
# )
target_link_libraries(${PROJECT_NAME} PRIVATE
SDL2::SDL2
SDL2::SDL2main
SDL2_image::SDL2_image
SDL2_ttf::SDL2_ttf
SDL2_mixer::SDL2_mixer
pugixml::pugixml
)
add_custom_command(
TARGET ${PROJECT_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_RUNTIME_DLLS:${PROJECT_NAME}> $<TARGET_FILE_DIR:${PROJECT_NAME}>
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/assets $<TARGET_FILE_DIR:${PROJECT_NAME}>
COMMAND_EXPAND_LISTS
)
# include(GNUInstallDirs)
# install(TARGETS ${PROJECT_NAME}
# RUNTIME_DEPENDENCIES
# PRE_EXCLUDE_REGEXES "api-ms-" "ext-ms-"
# DIRECTORIES ${SDL2_LIBRARY_DIRS}
# )
# install(DIRECTORY ${CMAKE_SOURCE_DIR}/assets DESTINATION ${CMAKE_INSTALL_BINDIR})