cmake_minimum_required(VERSION 3.16) project(EdgeProxy LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) 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) find_package(PkgConfig REQUIRED) pkg_check_modules(GST REQUIRED gstreamer-1.0 gstreamer-app-1.0) find_package(OpenCV REQUIRED) add_subdirectory(src/vendor/crow) add_library(nlohmann_json INTERFACE) target_include_directories(nlohmann_json INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/src/vendor ${CMAKE_CURRENT_SOURCE_DIR}/../libs # 如果你的 libs 目录有项目自定义头文件 ) 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 #tts src/tts/piper_tts_interface.cc #config配置 src/config/config_manager.cc #告警模块 src/alarm/alarm_service.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 # rknn_api rknnrt ) target_link_libraries(edge_proxy_lib PUBLIC Crow nlohmann_json ) # ================================== # Main Application Target # ================================== add_executable(edge_proxy src/main.cpp ) target_link_libraries(edge_proxy PRIVATE edge_proxy_lib ) add_executable(edge_streamer src/streamer/main_streamer.cpp ) # 链接新服务所需的所有库 target_link_libraries(edge_streamer PRIVATE ${GST_LIBRARIES} pthread ) target_include_directories(edge_streamer PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/streamer/include ${GST_INCLUDE_DIRS} ) # ================================================================= # 测试目标 # ================================================================= # add_executable(test # src/test.cc # src/systemMonitor/iio_sensor.cc # ) # target_link_libraries(test PRIVATE # edge_proxy_lib # ) add_executable(rknn src/rknn/main.cc src/rknn/postprocess.cc src/rknn/preprocess.cc src/rknn/rkYolov5s.cc ) target_link_libraries(rknn PRIVATE edge_proxy_lib ${OpenCV_LIBS} rockchip_mpp rga ) target_include_directories(rknn PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/services/intrusion-detection/include" # RKNN SDK 的头文件 /usr/local/include # OpenCV 头文件路径 (根据你的 find 命令输出) /usr/include/opencv4 # 编译器会在这里面找 opencv2/core/core.hpp # RGA 和 im2d 的头文件路径 (根据你的 find 命令输出) /usr/include/rga # 编译器会在这里面找 rga.h 和 im2d.h # Paho MQTT 头文件(通常在 /usr/local/include) /usr/local/include ${CMAKE_CURRENT_SOURCE_DIR}/src/streamer/include ${GST_INCLUDE_DIRS} )