bonus-edge-proxy/CMakeLists.txt

153 lines
3.9 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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}
)