44 lines
1.3 KiB
CMake
44 lines
1.3 KiB
CMake
cmake_minimum_required(VERSION 3.18)
|
|
project(LCDLLN_Server VERSION 1.0.0 LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
# Options
|
|
option(BUILD_MASTER "Build Master Server" ON)
|
|
option(BUILD_SHARD "Build Shard Server" ON)
|
|
|
|
# Include directories
|
|
include_directories(
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
)
|
|
|
|
# Find packages
|
|
find_package(OpenSSL REQUIRED)
|
|
find_package(MySQLConnectorCPP REQUIRED)
|
|
|
|
# External libraries
|
|
find_package(Argon2 REQUIRED)
|
|
find_package(spdlog REQUIRED)
|
|
find_package(inih REQUIRED)
|
|
|
|
# Sources
|
|
file(GLOB SERVER_SOURCES "src/*.cpp")
|
|
|
|
if(BUILD_MASTER)
|
|
add_executable(master_server ${SERVER_SOURCES})
|
|
target_compile_definitions(master_server PRIVATE BUILD_MASTER)
|
|
target_link_libraries(master_server PRIVATE OpenSSL::SSL OpenSSL::Crypto spdlog::spdlog MySQLConnectorCPP::mysqlcppconn argon2 inih)
|
|
endif()
|
|
|
|
if(BUILD_SHARD)
|
|
add_executable(shard_server ${SERVER_SOURCES})
|
|
target_compile_definitions(shard_server PRIVATE BUILD_SHARD)
|
|
target_link_libraries(shard_server PRIVATE OpenSSL::SSL OpenSSL::Crypto spdlog::spdlog argon2 inih)
|
|
endif()
|
|
|
|
# Output directories
|
|
set_target_properties(master_server PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|
set_target_properties(shard_server PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|