cmake_minimum_required(VERSION 3.16) project(EdgeProxy LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # --- 查找并链接 spdlog --- find_package(spdlog REQUIRED) find_package(Boost REQUIRED COMPONENTS system thread) message(STATUS "Found Boost version: ${Boost_VERSION}") find_package(PahoMqttCpp REQUIRED) find_package(SQLite3 REQUIRED) # 在包含 Crow 子目录之前,设置一个 CMake 选项 # 这会告诉 Crow 的构建脚本去使用 Boost 库中包含的 Asio add_subdirectory(src/vendor/crow) add_library(nlohmann_json INTERFACE) target_include_directories(nlohmann_json INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/src/vendor ) add_library(edge_proxy_lib STATIC # TCP通讯层 src/network/tcp_server.cc # --- 设备管理模块 --- src/deviceManager/device_manager.cc # 小工具 src/utils/mqtt_topic_matcher.cpp # --- MQTT 核心模块 --- src/mqtt/mqtt_client.cpp src/mqtt/mqtt_router.cpp src/mqtt/handler/data_handler.cpp src/mqtt/handler/command_handler.cpp # --- 协议层 --- src/protocol/protocol.cc src/protocol/private_protocol_adapter.cc src/protocol/protocol_factory.cc # 系统监视 src/systemMonitor/system_monitor.cc #modbus src/modbus/modbus_rtu_client.cc src/modbus/modbus_rtu_bus_service.cc src/modbus/generic_modbus_parser.cc # --- Modbus Master --- src/protocol/modbus/modbus_protocol.cc src/modbus/modbus_master_poller.cc # 数据缓存/断点续传 src/dataCache/data_cache.cc src/dataCache/cache_uploader.cc #web src/web/web_server.cc #SQL src/dataStorage/data_storage.cc ) target_include_directories(edge_proxy_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src ) target_link_libraries(edge_proxy_lib PRIVATE spdlog::spdlog Boost::system Boost::thread PahoMqttCpp::paho-mqttpp3 SQLite::SQLite3 pthread nlohmann_json ) target_link_libraries(edge_proxy_lib PUBLIC Crow ) # ================================================================= # Main Application Target (UNCOMMENTED AND ACTIVATED) # ================================================================= add_executable(edge_proxy src/main.cpp ) target_link_libraries(edge_proxy PRIVATE edge_proxy_lib ) # =================#================================================ # 测试目标 # ================================================================= # add_executable(test # src/test.cc # src/piper_tts_interface.cc # ) # target_link_libraries(test PRIVATE # edge_proxy_lib # )