cmake_minimum_required(VERSION 3.20) project(YourPartDaemon VERSION 1.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_C_COMPILER "gcc-13") set(CMAKE_CPP_COMPILER "g++-13") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto=auto") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto") find_package(PostgreSQL REQUIRED) find_package(Threads REQUIRED) find_package(PkgConfig REQUIRED) pkg_check_modules(LIBPQXX REQUIRED libpqxx) include_directories(${LIBPQXX_INCLUDE_DIRS}) link_directories(${LIBPQXX_LIBRARY_DIRS}) add_definitions(${LIBPQXX_CFLAGS_OTHER}) set(SOURCES src/main.cpp src/config.cpp src/connection_pool.cpp src/database.cpp src/character_creation_worker.cpp src/produce_worker.cpp src/message_broker.cpp src/websocket_server.cpp ) set(HEADERS src/config.h src/database.h src/connection_pool.h src/worker.h src/character_creation_worker.h src/produce_worker.h src/message_broker.h src/websocket_server.h ) add_executable(yourpart-daemon ${SOURCES} ${HEADERS}) find_package(nlohmann_json CONFIG REQUIRED) target_include_directories(yourpart-daemon PRIVATE ${PostgreSQL_INCLUDE_DIRS}) target_link_libraries(yourpart-daemon PRIVATE ${PostgreSQL_LIBRARIES} Threads::Threads z ssl crypto ${CMAKE_SOURCE_DIR}/lib/uSockets.a ${LIBPQXX_LIBRARIES}) install(TARGETS yourpart-daemon DESTINATION /usr/local/bin) install(FILES daemon.conf DESTINATION /etc/yourpart/)