-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
145 lines (129 loc) · 3.97 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
################# CONFIG ##################
#set cmake version required
cmake_minimum_required(VERSION 3.16)
#create project with name, language and version
project(IndieStudio LANGUAGES CXX VERSION 1)
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
set(CMAKE_HAVE_THREADS_LIBRARY 1)
set(CMAKE_USE_WIN32F_THREADS_INIT 0)
set(CMAKE_USE_PTHREADS_INIT 1)
#set normal/cache cmake variables
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fexceptions")
if (WIN32)
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /EHsc /Ox /fp:fast")
endif (WIN32)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake_modules/" CACHE PATH "" FORCE)
set(DirectX_D3DX9_LIBRARY "" CACHE FILEPATH "" FORCE)
set(ASSIMP_BUILD_ASSIMP_VIEW OFF CACHE BOOL "" FORCE)
set(ASSIMP_BUILD_ASSIMP_TOOLS OFF CACHE BOOL "" FORCE)
set(ASSIMP_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(ASSIMP_BUILD_SAMPLES OFF CACHE BOOL "" FORCE)
#compile options
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
add_compile_options(-fdiagnostics-color=always)
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
add_compile_options(-fcolor-diagnostics)
endif()
add_compile_options(-g)
add_compile_options(-O3 -Ofast -flto)
if (WIN32)
add_compile_options(/Ox /fp:fast)
else()
add_compile_options(-Ofast -flto)
endif()
################## BUILD ##################
#set result executable (target) name
set(EXEC_NAME
bomberman
)
#fetch include directories
set(INC
include/
include/Communication/
include/Audio/
include/Core/
include/Graphics/
include/Input/
include/Loader/
include/Animation/
include/Scene/
include/GraphicObject/
include/Game/
)
#fetch source files
set(SRC
src/Communication/SafeQueue.cpp
src/Communication/Packet.cpp
src/Communication/Message.cpp
src/Communication/MessageBus.cpp
src/Communication/Node.cpp
src/PlayerConfig.cpp
src/Camera.cpp
src/mappings.cpp
src/GameObject.cpp
src/GraphicObject/GraphicObject.cpp
src/GraphicObject/ModelObj.cpp
src/GraphicObject/AnimatedFramesObj.cpp
src/GraphicObject/AnimatedModelObj.cpp
src/GraphicObject/RectangleObj.cpp
src/GraphicObject/SpriteObj.cpp
src/Audio/Audio.cpp
src/Core/Core.cpp
src/Scene/ConfigScene.cpp
src/Scene/MappingScene.cpp
src/Scene/GameScene.cpp
src/Scene/MenuScene.cpp
src/Graphics/Graphics.cpp
src/Input/Input.cpp
src/Loader/Loader.cpp
src/Animation/Shader.cpp
src/Animation/Mesh.cpp
src/Animation/Bone.cpp
src/Animation/Model.cpp
src/Animation/Animation.cpp
src/Animation/Animator.cpp
src/Neo.cpp
src/Game/Player.cpp
src/Game/Bomb.cpp
src/Game/Wall.cpp
src/Game/PowerUp.cpp
src/Game/MapGenerator.cpp
src/Game/BotEngine.cpp
)
#fetch libraries
find_package(assimp REQUIRED)
find_package(glew REQUIRED)
find_package(glm REQUIRED)
find_package(OpenGL REQUIRED)
find_package(raylib REQUIRED)
#set includes
include_directories(${INC} ${glew_SOURCE_DIR}/include)
#set source files
add_executable(${EXEC_NAME}
${SRC}
src/main.cpp
)
#set libraries
target_link_libraries(${EXEC_NAME} PUBLIC assimp)
target_link_libraries(${EXEC_NAME} PUBLIC glew)
target_link_libraries(${EXEC_NAME} PUBLIC glm)
target_link_libraries(${EXEC_NAME} PUBLIC raylib)
################## POST BUILD ##################
#copy executable and its dlls to root for resources (only on windows)
if(WIN32)
add_custom_command(
TARGET ${EXEC_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/${EXEC_NAME}.exe ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/_deps/assimp-build/bin/assimp-vc143-mt.dll ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/bin/glew32.dll ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/_deps/raylib-build/raylib/raylib.dll ${CMAKE_SOURCE_DIR}
)
else()
add_custom_command(
TARGET ${EXEC_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/build/${EXEC_NAME} ${CMAKE_SOURCE_DIR}
)
endif()