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) find_package(PkgConfig REQUIRED) pkg_check_modules(GST REQUIRED gstreamer-1.0 gstreamer-app-1.0) find_package(OpenCV 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 rknn_api rknnrt ) 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 # ) # 1. 定义新的可执行文件 (我们将把代码放在 src/streamer/ 目录下) # add_executable(edge_streamer # src/streamer/main.cpp # src/streamer/StreamManager.cpp # ) # # 2. 为新服务链接所有必需的库 # target_link_libraries(edge_streamer PRIVATE # # GStreamer (来自我们新增的 pkg_check_modules) # ${GST_LIBRARIES} # Crow # nlohmann_json # PahoMqttCpp::paho-mqttpp3 # Boost::system # Boost::thread # rknn_api # rknnrt # pthread # ssl # crypto # ) # # 3. 为新服务设置头文件包含路径 # target_include_directories(edge_streamer PRIVATE # # 新服务的私有头文件 # ${CMAKE_CURRENT_SOURCE_DIR}/src/streamer/include # ${CMAKE_CURRENT_SOURCE_DIR}/src/vendor # # GStreamer 的头文件 # ${GST_INCLUDE_DIRS} # ${Boost_INCLUDE_DIRS} # # RKNN C-API 的头文件 (来自我们 Dockerfile 的 /usr/local/include) # /usr/local/include # )