cmake_minimum_required(VERSION 3.16) project(ScarChat CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) # Find required packages find_package(OpenSSL REQUIRED) find_package(SQLite3 REQUIRED) # Server binary (Linux/cross-platform) add_executable(chat_server src/server/server.cpp src/server/database.cpp ) target_link_libraries(chat_server PRIVATE OpenSSL::SSL OpenSSL::Crypto SQLite::SQLite3) target_compile_options(chat_server PRIVATE -Wall -Wextra -std=c++17) target_include_directories(chat_server PRIVATE src/server) # Database Manager utility add_executable(dbmanager src/server/database.cpp src/server/dbmanager.cpp ) target_link_libraries(dbmanager PRIVATE OpenSSL::SSL OpenSSL::Crypto SQLite::SQLite3) target_compile_options(dbmanager PRIVATE -Wall -Wextra -std=c++17) target_include_directories(dbmanager PRIVATE src/server) # Qt Client binary (Linux/cross-platform) find_package(Qt6 COMPONENTS Core Gui Widgets Network Multimedia REQUIRED) add_executable(chat_client_qt src/qt_client/main.cpp ) target_link_libraries(chat_client_qt PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Network Qt6::Multimedia OpenSSL::SSL OpenSSL::Crypto ) target_compile_options(chat_client_qt PRIVATE -Wall -Wextra -std=c++17) # Windows Client binary (Windows-only) if(WIN32) add_executable(chat_client_win WIN32 src/windows_client/main_win.cpp ) target_link_libraries(chat_client_win PRIVATE ws2_32 crypt32 ) target_compile_options(chat_client_win PRIVATE /W4) endif() # Installation targets install(TARGETS chat_server DESTINATION bin) install(TARGETS chat_client_qt DESTINATION bin) if(WIN32) install(TARGETS chat_client_win DESTINATION bin) endif()