# CMake 最低版本要求 cmake_minimum_required(VERSION 3.4.1) # 项目名称 project(IntrusionDetectionService CXX) # 设置 C++ 标准和编译选项 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_FLAGS "-pthread") # --- 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}) 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() # --- 2. 定义并查找其他依赖 (OpenCV, RGA) --- find_package(OpenCV REQUIRED) # 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() # --- 3. 生成可执行文件 --- # (修改点) 根据截图,所有源文件都在 src 目录下,为其添加 "src/" 前缀 add_executable(intrusion_detection_service src/main.cc src/postprocess.cc src/preprocess.cc src/rkYolov5s.cc ) # --- 4. 为目标指定头文件搜索路径 --- # (修改点) 根据截图,所有头文件都在 include 目录下 target_include_directories(intrusion_detection_service PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include # <-- 关键修改 ${OpenCV_INCLUDE_DIRS} ${RGA_PATH}/include # 如果有公共头文件,也需要添加路径,例如: ${CMAKE_SOURCE_DIR}/include ) # --- 5. 链接所有库到可执行文件 --- target_link_libraries(intrusion_detection_service ${RKNNRT_LIBRARY} ${RKNNAPI_LIBRARY} ${RGA_LIB} ${OpenCV_LIBS} ) message(STATUS "Configuration for IntrusionDetectionService is complete.")