scar-chat/CMakeLists.txt

67 lines
1.8 KiB
CMake

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(Qt5 COMPONENTS Core Gui Widgets Network Multimedia REQUIRED)
add_executable(chat_client_qt
src/qt_client/main.cpp
)
target_link_libraries(chat_client_qt PRIVATE
Qt5::Core
Qt5::Gui
Qt5::Widgets
Qt5::Network
Qt5::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()