bonus-edge-proxy/CMakeLists.txt

156 lines
3.7 KiB
CMake

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