2025-09-15 14:15:58 +08:00
|
|
|
# CMake 最低版本要求
|
2025-09-15 11:06:05 +08:00
|
|
|
cmake_minimum_required(VERSION 3.4.1)
|
|
|
|
|
|
2025-09-15 14:15:58 +08:00
|
|
|
# 项目名称
|
|
|
|
|
project(IntrusionDetectionService CXX)
|
2025-09-15 11:06:05 +08:00
|
|
|
|
2025-09-15 14:15:58 +08:00
|
|
|
# 设置 C++ 标准和编译选项
|
2025-09-15 14:43:57 +08:00
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
2025-09-15 11:06:05 +08:00
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
|
set(CMAKE_CXX_FLAGS "-pthread")
|
|
|
|
|
|
2025-09-15 14:15:58 +08:00
|
|
|
# --- 1. 定义并查找公共库 (RKNN) ---
|
|
|
|
|
# 使用相对路径找到顶层目录下的 libs 文件夹
|
|
|
|
|
set(COMMON_LIB_DIR ${CMAKE_SOURCE_DIR}/libs)
|
|
|
|
|
find_library(RKNNRT_LIBRARY rknnrt HINTS ${COMMON_LIB_DIR})
|
|
|
|
|
find_library(RKNNAPI_LIBRARY rknn_api HINTS ${COMMON_LIB_DIR})
|
2025-09-15 11:06:05 +08:00
|
|
|
|
2025-09-15 14:15:58 +08:00
|
|
|
if(NOT RKNNRT_LIBRARY OR NOT RKNNAPI_LIBRARY)
|
|
|
|
|
message(FATAL_ERROR "Could not find RKNN libraries in ${COMMON_LIB_DIR}")
|
|
|
|
|
else()
|
|
|
|
|
message(STATUS "Found rknnrt: ${RKNNRT_LIBRARY}")
|
|
|
|
|
message(STATUS "Found rknn_api: ${RKNNAPI_LIBRARY}")
|
|
|
|
|
endif()
|
2025-09-15 11:06:05 +08:00
|
|
|
|
2025-09-15 14:15:58 +08:00
|
|
|
# --- 2. 定义并查找其他依赖 (OpenCV, RGA) ---
|
2025-09-15 11:06:05 +08:00
|
|
|
find_package(OpenCV REQUIRED)
|
|
|
|
|
|
2025-09-15 14:15:58 +08:00
|
|
|
# rga 库的路径,根据您的截图,它位于 include/3rdparty
|
|
|
|
|
set(RGA_PATH ${CMAKE_CURRENT_SOURCE_DIR}/include/3rdparty/rga/RK3588)
|
|
|
|
|
set(RGA_LIB ${RGA_PATH}/lib/Linux/aarch64/librga.so)
|
|
|
|
|
if(NOT EXISTS ${RGA_LIB})
|
|
|
|
|
message(FATAL_ERROR "RGA library not found at ${RGA_LIB}")
|
|
|
|
|
endif()
|
2025-09-15 11:06:05 +08:00
|
|
|
|
2025-09-15 14:15:58 +08:00
|
|
|
# --- 3. 生成可执行文件 ---
|
|
|
|
|
# (修改点) 根据截图,所有源文件都在 src 目录下,为其添加 "src/" 前缀
|
|
|
|
|
add_executable(intrusion_detection_service
|
2025-09-15 11:06:05 +08:00
|
|
|
src/main.cc
|
|
|
|
|
src/postprocess.cc
|
|
|
|
|
src/preprocess.cc
|
|
|
|
|
src/rkYolov5s.cc
|
|
|
|
|
)
|
|
|
|
|
|
2025-09-15 14:15:58 +08:00
|
|
|
# --- 4. 为目标指定头文件搜索路径 ---
|
|
|
|
|
# (修改点) 根据截图,所有头文件都在 include 目录下
|
|
|
|
|
target_include_directories(intrusion_detection_service PUBLIC
|
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include # <-- 关键修改
|
|
|
|
|
${OpenCV_INCLUDE_DIRS}
|
|
|
|
|
${RGA_PATH}/include
|
|
|
|
|
# 如果有公共头文件,也需要添加路径,例如: ${CMAKE_SOURCE_DIR}/include
|
2025-09-15 11:06:05 +08:00
|
|
|
)
|
|
|
|
|
|
2025-09-15 14:15:58 +08:00
|
|
|
# --- 5. 链接所有库到可执行文件 ---
|
|
|
|
|
target_link_libraries(intrusion_detection_service
|
|
|
|
|
${RKNNRT_LIBRARY}
|
|
|
|
|
${RKNNAPI_LIBRARY}
|
|
|
|
|
${RGA_LIB}
|
|
|
|
|
${OpenCV_LIBS}
|
|
|
|
|
)
|
2025-09-15 11:06:05 +08:00
|
|
|
|
2025-09-15 14:15:58 +08:00
|
|
|
message(STATUS "Configuration for IntrusionDetectionService is complete.")
|