-
Notifications
You must be signed in to change notification settings - Fork 38
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
138 lines (125 loc) · 4.15 KB
/
CMakeLists.txt
File metadata and controls
138 lines (125 loc) · 4.15 KB
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
cmake_minimum_required(VERSION 3.16)
project(DarkEden VERSION 1.0 LANGUAGES CXX)
# ============================================================================
# 全局设置
# ============================================================================
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# 输出目录
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
# ============================================================================
# 全局编译选项
# ============================================================================
# 基础宏定义 - 所有目标都需要
if(APPLE)
add_compile_definitions(__APPLE__ _REENTRANT)
elseif(UNIX)
add_compile_definitions(__LINUX__ _REENTRANT)
endif()
# 警告设置
set(WARNING_FLAGS
-Wall
-Wno-format
-Wno-format-security
)
add_compile_options(${WARNING_FLAGS})
# Debug 模式
set(CMAKE_CXX_FLAGS_DEBUG "-g")
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG")
# ============================================================================
# 查找依赖
# ============================================================================
find_package(Threads REQUIRED)
# MySQL
if(APPLE)
find_path(MYSQL_INCLUDE_DIR mysql/mysql.h
PATHS
/opt/homebrew/include
/opt/homebrew/Cellar/mysql-client/*/include
/opt/homebrew/Cellar/mariadb-connector-c/*/include
/usr/local/include
NO_DEFAULT_PATH
)
find_library(MYSQL_LIBRARY mysqlclient
PATHS
/opt/homebrew/lib
/opt/homebrew/Cellar/mysql-client/*/lib
/opt/homebrew/Cellar/mariadb-connector-c/*/lib
/opt/homebrew/Cellar/mariadb-connector-c/*/lib/mariadb
/usr/local/lib
)
elseif(UNIX)
find_path(MYSQL_INCLUDE_DIR mysql/mysql.h
PATHS /usr/include /usr/local/include
NO_DEFAULT_PATH
)
find_library(MYSQL_LIBRARY mysqlclient
PATHS /usr/lib /usr/local/lib /usr/lib/x86_64-linux-gnu /usr/lib/aarch64-linux-gnu
)
endif()
# Lua 5.1 / LuaJIT
find_package(PkgConfig)
if(PkgConfig_FOUND)
pkg_check_modules(LUA51 lua5.1)
endif()
if(NOT LUA51_FOUND)
if(APPLE)
find_path(LUA51_INCLUDE_DIRS lua.h
PATHS
/opt/homebrew/include/luajit-2.1
/opt/homebrew/include/lua5.1
/usr/local/include/lua5.1
)
find_library(LUA51_LIBRARIES luajit
PATHS /opt/homebrew/lib /usr/local/lib
)
if(NOT LUA51_LIBRARIES)
find_library(LUA51_LIBRARIES lua5.1
PATHS /opt/homebrew/lib /usr/local/lib
)
endif()
else()
find_path(LUA51_INCLUDE_DIRS lua.h PATHS /usr/include/lua5.1 /usr/local/include/lua5.1)
find_library(LUA51_LIBRARIES lua5.1 PATHS /usr/lib /usr/local/lib)
endif()
endif()
# Xerces-C
if(APPLE)
find_path(XERCES_INCLUDE_DIR xercesc/util/XercesVersion.hpp
PATHS
/opt/homebrew/include
/opt/homebrew/Cellar/xerces-c/*/include
/usr/local/include
)
find_library(XERCES_LIBRARY xerces-c
PATHS /opt/homebrew/lib /usr/local/lib
)
else()
find_library(XERCES_LIBRARY xerces-c)
endif()
# ============================================================================
# 包含目录(全局)
# ============================================================================
include_directories(
${CMAKE_SOURCE_DIR}/src/Core
${CMAKE_SOURCE_DIR}/src/server
${CMAKE_SOURCE_DIR}/src/server/database
${MYSQL_INCLUDE_DIR}
)
if(XERCES_INCLUDE_DIR)
include_directories(${XERCES_INCLUDE_DIR})
endif()
# ============================================================================
# 子目录
# ============================================================================
add_subdirectory(src/Core)
add_subdirectory(src/server)
# ============================================================================
# 安装规则
# ============================================================================
install(TARGETS gameserver loginserver sharedserver
RUNTIME DESTINATION bin
)