bonus-edge-proxy/CMakeLists.txt

217 lines
6.0 KiB
CMake
Raw Normal View History

2025-09-30 18:34:50 +08:00
cmake_minimum_required(VERSION 3.16)
project(EdgeProxy LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
2026-01-21 11:04:34 +08:00
find_package(Eigen3 REQUIRED)
2025-09-30 18:34:50 +08:00
find_package(spdlog REQUIRED)
2026-01-21 11:04:34 +08:00
find_package(CURL REQUIRED)
2025-09-30 18:34:50 +08:00
find_package(Boost REQUIRED COMPONENTS system thread)
message(STATUS "Found Boost version: ${Boost_VERSION}")
find_package(PahoMqttCpp REQUIRED)
2025-10-15 14:27:21 +08:00
find_package(SQLite3 REQUIRED)
2025-10-20 17:45:43 +08:00
find_package(PkgConfig REQUIRED)
2026-01-17 17:40:14 +08:00
# pkg_check_modules(GST REQUIRED gstreamer-1.0 gstreamer-app-1.0 gstreamer-allocators-1.0)
pkg_check_modules(GST REQUIRED gstreamer-1.0 gstreamer-app-1.0 gstreamer-allocators-1.0 gstreamer-video-1.0)
2025-10-21 09:59:56 +08:00
find_package(OpenCV REQUIRED)
2025-10-23 16:15:09 +08:00
2025-10-15 14:27:21 +08:00
add_subdirectory(src/vendor/crow)
2025-09-30 18:34:50 +08:00
2026-01-14 17:45:26 +08:00
set(BYTETRACK_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/algorithm/bytetrack/src)
set(BYTETRACK_SRCS
${BYTETRACK_DIR}/BYTETracker.cpp
${BYTETRACK_DIR}/KalmanFilter.cpp
${BYTETRACK_DIR}/Object.cpp
${BYTETRACK_DIR}/Rect.cpp
${BYTETRACK_DIR}/STrack.cpp
${BYTETRACK_DIR}/lapjv.cpp
)
add_library(nlohmann_json INTERFACE)
target_include_directories(nlohmann_json INTERFACE
${CMAKE_CURRENT_SOURCE_DIR}/src/vendor
2025-10-24 13:11:33 +08:00
${CMAKE_CURRENT_SOURCE_DIR}/../libs # 如果你的 libs 目录有项目自定义头文件
2025-09-30 18:34:50 +08:00
)
2026-01-14 17:45:26 +08:00
add_library(edge_proxy_lib STATIC
2025-10-13 16:39:46 +08:00
# TCP通讯层
2025-10-11 18:24:56 +08:00
src/network/tcp_server.cc
2025-10-14 16:45:50 +08:00
# --- 设备管理模块 ---
src/deviceManager/device_manager.cc
2025-10-13 13:55:15 +08:00
# 小工具
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
2025-10-14 14:30:52 +08:00
src/protocol/private_protocol_adapter.cc
src/protocol/protocol_factory.cc
2025-10-14 11:18:01 +08:00
# 系统监视
src/systemMonitor/system_monitor.cc
#modbus
src/modbus/modbus_rtu_client.cc
2025-10-16 17:42:59 +08:00
src/modbus/modbus_rtu_bus_service.cc
2025-10-14 16:06:43 +08:00
src/modbus/generic_modbus_parser.cc
# --- Modbus Master ---
src/protocol/modbus/modbus_protocol.cc
src/modbus/modbus_master_poller.cc
2025-10-14 18:10:15 +08:00
# 数据缓存/断点续传
src/dataCache/data_cache.cc
src/dataCache/cache_uploader.cc
2025-10-15 14:27:21 +08:00
#web
src/web/web_server.cc
2025-10-17 17:20:45 +08:00
#SQL
src/dataStorage/data_storage.cc
2025-10-21 15:34:24 +08:00
#tts
src/tts/piper_tts_interface.cc
2025-10-23 16:15:09 +08:00
#config配置
src/config/config_manager.cc
2025-10-24 14:19:33 +08:00
#告警模块
src/alarm/alarm_service.cc
2025-10-24 18:28:33 +08:00
# 推理模块
src/rknn/video_service.cc
src/rknn/rkYolov5s.cc
src/rknn/rkYolov8.cc
2025-10-24 18:28:33 +08:00
src/rknn/preprocess.cc
src/rknn/postprocess.cc
src/videoServiceManager/video_service_manager.cc
2025-10-29 11:12:53 +08:00
src/algorithm/IntrusionModule.cc
src/algorithm/HumanDetectionModule.cc
2026-01-21 11:04:34 +08:00
src/light_control/light_controller.cc
2026-01-14 17:45:26 +08:00
${BYTETRACK_SRCS}
2025-10-13 13:55:15 +08:00
)
target_include_directories(edge_proxy_lib PUBLIC
2025-10-24 18:28:33 +08:00
/usr/include/opencv4
2025-10-13 13:55:15 +08:00
${CMAKE_CURRENT_SOURCE_DIR}/src
2025-10-24 18:28:33 +08:00
${GST_INCLUDE_DIRS}
2025-11-04 09:55:52 +08:00
/usr/include/rga
2026-01-14 17:45:26 +08:00
${EIGEN3_INCLUDE_DIRS} # Eigen3 头文件
${CMAKE_CURRENT_SOURCE_DIR}/src/algorithm/bytetrack/include # ByteTrack 头文件
2025-10-11 18:24:56 +08:00
)
target_link_libraries(edge_proxy_lib PRIVATE
spdlog::spdlog
Boost::system
Boost::thread
PahoMqttCpp::paho-mqttpp3
2025-10-15 14:27:21 +08:00
SQLite::SQLite3
2025-10-11 18:24:56 +08:00
pthread
2026-01-21 11:04:34 +08:00
CURL::libcurl
2025-10-21 15:34:24 +08:00
# rknn_api
2025-10-20 14:18:37 +08:00
rknnrt
2025-10-24 18:28:33 +08:00
rockchip_mpp
rga
${OpenCV_LIBS}
${GST_LIBRARIES}
2025-10-11 18:24:56 +08:00
)
2025-10-15 14:27:21 +08:00
target_link_libraries(edge_proxy_lib PUBLIC
Crow
nlohmann_json
2025-10-15 14:27:21 +08:00
)
2025-10-24 18:28:33 +08:00
2025-10-23 16:15:09 +08:00
# ==================================
# Main Application Target
# ==================================
2025-10-11 18:24:56 +08:00
add_executable(edge_proxy
src/main.cpp
)
2025-10-24 18:28:33 +08:00
target_link_libraries(edge_proxy PRIVATE
2025-10-11 18:24:56 +08:00
edge_proxy_lib
)
2025-10-23 16:15:09 +08:00
# =================================================================
# 测试目标
# =================================================================
# add_executable(test
# src/test.cc
# )
# target_link_libraries(test PRIVATE
# edge_proxy_lib
# )
2025-10-24 18:28:33 +08:00
# add_executable(rknn
# src/rknn/main.cc
# src/rknn/postprocess.cc
# src/rknn/preprocess.cc
# src/rknn/rkYolov5s.cc
2025-10-24 13:11:33 +08:00
2025-10-24 18:28:33 +08:00
# # )
2025-10-24 13:11:33 +08:00
2025-10-24 18:28:33 +08:00
# 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"
# /usr/local/include
# /usr/include/opencv4 # 编译器会在这里面找 opencv2/core/core.hpp
# /usr/include/rga # 编译器会在这里面找 rga.h 和 im2d.h
# /usr/local/include
# ${CMAKE_CURRENT_SOURCE_DIR}/src/streamer/include
# ${GST_INCLUDE_DIRS}
2026-01-16 17:11:50 +08:00
# )
# =================================================================
# RKNN 重构独立测试模块 (Refactor Test)
# =================================================================
2026-01-21 11:04:34 +08:00
# set(RKNN_TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/rknn_test)
# set(RKNN_OLD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/rknn)
# set(REF_TEST_SRCS
# ${RKNN_TEST_DIR}/rkYolov5s.cc
# ${RKNN_TEST_DIR}/preprocess.cc
# ${RKNN_TEST_DIR}/postprocess.cc
# ${RKNN_TEST_DIR}/rkYolov8.cc
# ${RKNN_TEST_DIR}/video_service.cc
# # ${RKNN_TEST_DIR}/dma_allocator.cc
# # ${RKNN_TEST_DIR}/rga_processor.cc
# )
2026-01-16 17:11:50 +08:00
2026-01-17 17:40:14 +08:00
2026-01-21 11:04:34 +08:00
# add_executable(rknn_refactor_test
# src/test.cc
# ${REF_TEST_SRCS}
# )
2026-01-16 17:11:50 +08:00
2026-01-21 11:04:34 +08:00
# target_include_directories(rknn_refactor_test PRIVATE
# ${RKNN_TEST_DIR} # 【第一优先级】: 先找新目录 (确保引用到修改后的 rkYolov5s.hpp 等)
# ${RKNN_OLD_DIR} # 【第二优先级】: 再找旧目录 (找到 helper 文件如 coreNum.hpp)
# ${CMAKE_CURRENT_SOURCE_DIR}/src # 【第三优先级】: 项目根目录
# /usr/include/opencv4 # OpenCV
# /usr/include/rga # RGA
# ${GST_INCLUDE_DIRS}
# )
2026-01-16 17:11:50 +08:00
2026-01-21 11:04:34 +08:00
# target_link_libraries(rknn_refactor_test PRIVATE
# spdlog::spdlog
# Boost::system
# Boost::thread
# pthread
2026-01-16 17:11:50 +08:00
2026-01-21 11:04:34 +08:00
# # RKNN 硬件相关库
# rknnrt
# rockchip_mpp
# rga
# ${OpenCV_LIBS}
# ${GST_LIBRARIES}
# # 其他可能用到的
# nlohmann_json
# )