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)