-
Notifications
You must be signed in to change notification settings - Fork 81
/
Copy pathCMakeLists.txt
129 lines (95 loc) · 2.72 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
cmake_minimum_required(VERSION 3.10)
project(
open-builder
VERSION 1.0
)
include("$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake")
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_23)
set_target_properties(${PROJECT_NAME} PROPERTIES CXX_EXTENSIONS OFF)
target_compile_definitions(${PROJECT_NAME} PRIVATE GLM_ENABLE_EXPERIMENTAL)
if(MSVC)
set(CMAKE_CXX_FLAGS_RELEASE "/O2")
set(CMAKE_CXX_FLAGS_RELEASE "/Ox")
target_compile_options(${PROJECT_NAME} PRIVATE
/W4)
else()
target_compile_options(${PROJECT_NAME} PRIVATE
-Wall -Wextra -pedantic)
endif()
function (include_dirs target)
target_include_directories(${target}
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/deps/
${CMAKE_CURRENT_SOURCE_DIR}/deps/lua/
${CMAKE_CURRENT_SOURCE_DIR}/src/common/
)
endfunction(include_dirs)
find_package(glm CONFIG REQUIRED)
find_package(lua REQUIRED)
find_package(SFML COMPONENTS system audio network window graphics CONFIG REQUIRED)
find_package(imgui CONFIG REQUIRED)
add_subdirectory(deps)
add_subdirectory(src/common/common)
add_subdirectory(src/client)
add_subdirectory(src/server)
add_executable(${PROJECT_NAME}
src/main.cpp
)
target_include_directories(${PROJECT_NAME}
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src/server/
${LUA_INCLUDE_DIR}
)
target_include_directories(ob-common
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/deps/
)
target_include_directories(ob-client
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src/server/
)
include_dirs(${PROJECT_NAME})
include_dirs(ob-client)
include_dirs(ob-server)
link_exe(${PROJECT_NAME})
target_include_directories(
${PROJECT_NAME}
PRIVATE
deps
)
target_link_libraries(${PROJECT_NAME} PRIVATE
ob-common
ob-client
ob-server
glad
enet
sfml-system sfml-audio sfml-network sfml-graphics sfml-window
# imgui::imgui
glm::glm
# imgui_sfml
glad
${LUA_LIBRARIES}
)
target_include_directories(ob-client
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src/server/
)
#Create the unit test executable
add_executable(tests
tests/tests.cpp
tests/common/world/chunk_manager_test.cpp
tests/common/world/coordinate_test.cpp
tests/common/world/chunk_test.cpp
tests/common/util/obd_parser_test.cpp
tests/common/lua/script_engine_test.cpp
tests/client/lua/client_control_api_test.cpp
tests/client/lua/gui_widget_api_test.cpp
tests/client_server_tests.cpp
)
include_dirs(tests)
target_include_directories(tests
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src/
${CMAKE_CURRENT_SOURCE_DIR}/src/server
)
link_exe(tests)