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 )