cmake_minimum_required(VERSION 3.20) project(YourPartDaemon VERSION 1.0 LANGUAGES CXX) # C++ Standard and Compiler Settings set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Explicitly set compiler versions for Tumbleweed set(CMAKE_C_COMPILER gcc-15) set(CMAKE_CXX_COMPILER g++-15) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto=auto") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -flto") set(CMAKE_BUILD_TYPE Debug) # Include /usr/local if needed list(APPEND CMAKE_PREFIX_PATH /usr/local) # Find libwebsockets via pkg-config find_package(PkgConfig REQUIRED) pkg_check_modules(LWS REQUIRED libwebsockets) # Find other dependencies find_package(PostgreSQL REQUIRED) find_package(Threads REQUIRED) find_package(nlohmann_json CONFIG REQUIRED) # PostgreSQL C++ libpqxx find_package(PkgConfig REQUIRED) pkg_check_modules(LIBPQXX REQUIRED libpqxx) # Project sources and headers 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 src/stockagemanager.cpp src/director_worker.cpp src/valuerecalculationworker.cpp src/usercharacterworker.cpp src/houseworker.cpp src/politics_worker.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 src/stockagemanager.h src/director_worker.h src/valuerecalculationworker.h src/usercharacterworker.h src/houseworker.h src/politics_worker.h ) # Define executable target add_executable(yourpart-daemon ${SOURCES} ${HEADERS}) # Include directories target_include_directories(yourpart-daemon PRIVATE ${PostgreSQL_INCLUDE_DIRS} ${LIBPQXX_INCLUDE_DIRS} ${LWS_INCLUDE_DIRS} ) # Link libraries target_link_libraries(yourpart-daemon PRIVATE ${PostgreSQL_LIBRARIES} Threads::Threads z ssl crypto ${LIBPQXX_LIBRARIES} ${LWS_LIBRARIES} nlohmann_json::nlohmann_json ) # Installation rules install(TARGETS yourpart-daemon DESTINATION /usr/local/bin) install(FILES daemon.conf DESTINATION /etc/yourpart/)