50 lines
1.0 KiB
CMake
50 lines
1.0 KiB
CMake
|
|
cmake_minimum_required(VERSION 3.20)
|
||
|
|
project(SCARChat VERSION 1.0.0 LANGUAGES C CXX)
|
||
|
|
|
||
|
|
set(CMAKE_CXX_STANDARD 20)
|
||
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||
|
|
set(CMAKE_C_STANDARD 99)
|
||
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||
|
|
|
||
|
|
# Options
|
||
|
|
option(BUILD_SERVER "Build the SCAR Chat server" ON)
|
||
|
|
option(BUILD_CLIENT "Build the SCAR Chat client" ON)
|
||
|
|
option(BUILD_TESTS "Build unit tests" OFF)
|
||
|
|
|
||
|
|
# Find required packages
|
||
|
|
find_package(Boost REQUIRED COMPONENTS system thread)
|
||
|
|
find_package(OpenSSL REQUIRED)
|
||
|
|
find_package(SQLite3 REQUIRED)
|
||
|
|
|
||
|
|
if(BUILD_CLIENT)
|
||
|
|
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Network Sql)
|
||
|
|
set(CMAKE_AUTOMOC ON)
|
||
|
|
set(CMAKE_AUTORCC ON)
|
||
|
|
set(CMAKE_AUTOUIC ON)
|
||
|
|
endif()
|
||
|
|
|
||
|
|
# Third-party libraries
|
||
|
|
add_subdirectory(third_party)
|
||
|
|
|
||
|
|
# Common/shared code
|
||
|
|
add_subdirectory(shared)
|
||
|
|
|
||
|
|
# Server
|
||
|
|
if(BUILD_SERVER)
|
||
|
|
add_subdirectory(server)
|
||
|
|
endif()
|
||
|
|
|
||
|
|
# Client
|
||
|
|
if(BUILD_CLIENT)
|
||
|
|
add_subdirectory(client)
|
||
|
|
endif()
|
||
|
|
|
||
|
|
# Database manager utility
|
||
|
|
add_subdirectory(dbmanager)
|
||
|
|
|
||
|
|
# Tests
|
||
|
|
if(BUILD_TESTS)
|
||
|
|
enable_testing()
|
||
|
|
add_subdirectory(tests)
|
||
|
|
endif()
|