-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
76 lines (66 loc) · 2.01 KB
/
CMakeLists.txt
File metadata and controls
76 lines (66 loc) · 2.01 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
################# CONFIG ##################
#init Cmake
cmake_minimum_required(VERSION 3.24)
project(TypeLink LANGUAGES CXX VERSION 1.0)
#set flags
set(CMAKE_CXX_COMPILER "g++")
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
if(UNIX)
set(CMAKE_CXX_FLAGS "-std=c++20 -Ofast")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -g -Wall -Wextra")
else()
# set(CMAKE_CXX_FLAGS "/std:c++20 /Ox /EHsc")
# set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} /DEBUG:FULL /Wall")
endif()
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
set(CMAKE_THREADS_LIBS_INIT Threads::Threads)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
if (WIN32)
set(BUILD_SHARED_LIBS OFF)
else()
set(BUILD_SHARED_LIBS ON)
endif()
################## BUILD TYPELINK ##################
#set library name
set(LIBRARY TypeLink)
#set root path
set(LIBRARY_ROOT ${PROJECT_NAME}/Library)
#fetch include paths
set(LIBRARY_INC
${LIBRARY_ROOT}/Communication/
${LIBRARY_ROOT}/PacketManager/
${LIBRARY_ROOT}/Connection/
${LIBRARY_ROOT}/Console/
${LIBRARY_ROOT}/Exception/
${LIBRARY_ROOT}/Network/
${LIBRARY_ROOT}/Server/
${LIBRARY_ROOT}/Client/
${LIBRARY_ROOT}/
)
#fetch source files
set(LIBRARY_SRC
${LIBRARY_ROOT}/Communication/CommunicationTcp.cpp
${LIBRARY_ROOT}/Communication/CommunicationUdp.cpp
${LIBRARY_ROOT}/PacketManager/PacketManager.cpp
${LIBRARY_ROOT}/Connection/Connection.cpp
${LIBRARY_ROOT}/Console/Console.cpp
${LIBRARY_ROOT}/Exception/Exception.cpp
${LIBRARY_ROOT}/Network/Network.cpp
${LIBRARY_ROOT}/Server/Server.cpp
${LIBRARY_ROOT}/Server/ServerTcp.cpp
${LIBRARY_ROOT}/Server/ServerUdp.cpp
${LIBRARY_ROOT}/Client/Client.cpp
${LIBRARY_ROOT}/Client/ClientTcp.cpp
${LIBRARY_ROOT}/Client/ClientUdp.cpp
)
#set include paths
include_directories(
${LIBRARY_INC}
)
#set source files (create library)
add_library(${LIBRARY} ${LIBRARY_SRC})
#link library
target_include_directories(${LIBRARY} PUBLIC ${LIBRARY_INC})