55 lines
1.3 KiB
CMake
55 lines
1.3 KiB
CMake
cmake_minimum_required(VERSION 3.15)
|
|
project(chat_service CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
# Find required packages
|
|
find_package(Drogon CONFIG REQUIRED)
|
|
find_package(PkgConfig REQUIRED)
|
|
pkg_check_modules(JSONCPP REQUIRED jsoncpp)
|
|
|
|
# Source files
|
|
set(SOURCES
|
|
src/main.cpp
|
|
src/controllers/ChatController.cpp
|
|
src/controllers/ChatWebSocketController.cpp
|
|
src/controllers/ModerationController.cpp
|
|
src/controllers/ChatAdminController.cpp
|
|
src/controllers/WatchSyncController.cpp
|
|
src/services/ChatService.cpp
|
|
src/services/RedisMessageStore.cpp
|
|
src/services/AuthService.cpp
|
|
src/services/ModerationService.cpp
|
|
src/services/StickerService.cpp
|
|
src/services/CensorService.cpp
|
|
src/middleware/ChatAuthMiddleware.cpp
|
|
)
|
|
|
|
# Create executable
|
|
add_executable(${PROJECT_NAME} ${SOURCES})
|
|
|
|
# Link libraries
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
|
Drogon::Drogon
|
|
hiredis
|
|
redis++
|
|
${JSONCPP_LIBRARIES}
|
|
ssl
|
|
crypto
|
|
z
|
|
uuid
|
|
pthread
|
|
)
|
|
|
|
# Include directories
|
|
target_include_directories(${PROJECT_NAME} PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src
|
|
${JSONCPP_INCLUDE_DIRS}
|
|
)
|
|
|
|
# Set output directory
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
|
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
|
|
)
|