-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
88 lines (75 loc) · 2.24 KB
/
CMakeLists.txt
File metadata and controls
88 lines (75 loc) · 2.24 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
cmake_minimum_required(VERSION 3.20)
project(r-type
VERSION 0.0.1
DESCRIPTION "CPP-500 ‒ R-Type"
HOMEPAGE_URL "https://github.com/lypitech/rtype"
LANGUAGES CXX
)
option(BUILD_TEST "Build the unit tests" OFF)
option(USE_CONAN "Use Conan for dependencies" ON)
# --- Dependencies ---
if(USE_CONAN)
if(DEFINED CMAKE_TOOLCHAIN_FILE AND CMAKE_TOOLCHAIN_FILE MATCHES "conan_toolchain")
set(USING_CONAN TRUE)
elseif(EXISTS "${CMAKE_BINARY_DIR}/conan_toolchain.cmake")
include("${CMAKE_BINARY_DIR}/conan_toolchain.cmake")
set(USING_CONAN TRUE)
else()
message(STATUS "Conan toolchain not found, using system packages")
set(USING_CONAN FALSE)
endif()
else()
set(USING_CONAN FALSE)
endif()
# --- Build options ---
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
# Find packages using pkg-config when not using Conan
if(NOT USING_CONAN)
find_package(PkgConfig REQUIRED)
pkg_check_modules(ASIO REQUIRED asio)
find_package(raylib REQUIRED)
find_package(nlohmann_json REQUIRED)
else()
find_package(asio REQUIRED)
find_package(raylib REQUIRED)
find_package(nlohmann_json REQUIRED)
endif()
if(BUILD_TESTS)
enable_testing()
if(USING_CONAN)
find_package(GTest REQUIRED)
else()
find_package(PkgConfig REQUIRED)
pkg_check_modules(GTEST REQUIRED gtest)
endif()
include(GoogleTest)
message(STATUS "Building with Tests ENABLED")
endif()
add_subdirectory(lib/shuvlog)
add_subdirectory(lib/rtnt)
add_subdirectory(lib/cli_parser)
add_subdirectory(lib/rtecs)
add_subdirectory(lib/rteng)
add_subdirectory(Server)
add_subdirectory(Client)
#add_subdirectory(Editor)
# --- Build targets ---
add_custom_target(debug
COMMAND ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Debug ${CMAKE_SOURCE_DIR}
COMMAND ${CMAKE_COMMAND} --build .
COMMENT "Building in debug mode with DEBUG_MODE defined"
)
add_custom_target(re
COMMAND ${CMAKE_COMMAND} --build . --target clean
COMMAND ${CMAKE_COMMAND} --build . --target all
)
# --- Installation ---
#install(TARGETS ${PROJECT_NAME}
# RUNTIME DESTINATION bin
#)