Files
pallet_storage_detection_sy…/docs/cmake_configuration_summary.md
2026-01-04 16:51:58 +08:00

5.5 KiB
Raw Permalink Blame History

CMake 配置文档

本文档总结了 image_capture 项目的 CMake 构建系统配置。


目录结构

image_capture/
├── CMakeLists.txt              # 主构建配置文件
└── cmake/                      # CMake 模块目录
    ├── CompilerOptions.cmake   # 编译器选项配置
    ├── Dependencies.cmake      # 外部依赖管理
    └── PercipioSDK.cmake       # 相机 SDK 配置

主配置文件:CMakeLists.txt

基本信息

  • CMake 最低版本: 3.10
  • 项目名称: image_capture
  • 编程语言: C++
  • 构建生成器: Visual Studio 17 2022 (MSVC)

输出目录

CMAKE_RUNTIME_OUTPUT_DIRECTORY = ${CMAKE_BINARY_DIR}/bin/Release  # 可执行文件
CMAKE_LIBRARY_OUTPUT_DIRECTORY = ${CMAKE_BINARY_DIR}/lib/Release  # 动态库
CMAKE_ARCHIVE_OUTPUT_DIRECTORY = ${CMAKE_BINARY_DIR}/lib/Release  # 静态库

模块化设计

项目采用模块化的 CMake 配置,通过 cmake/ 目录下的三个模块文件组织:

  1. CompilerOptions.cmake - 编译器和全局设置
  2. Dependencies.cmake - Qt6、OpenCV、Open3D 依赖
  3. PercipioSDK.cmake - 图漾相机 SDK 配置

库和可执行文件

1. Algorithm Library (algorithm_lib)

类型: 静态库

源文件:

  • src/algorithm/core/detection_base.cpp
  • src/algorithm/core/detection_result.cpp
  • src/algorithm/utils/image_processor.cpp
  • src/algorithm/detections/slot_occupancy_detection.cpp
  • src/algorithm/detections/pallet_offset_detection.cpp
  • src/algorithm/detections/beam_rack_deflection_detection.cpp
  • src/algorithm/detections/visual_inventory_detection.cpp
  • src/algorithm/detections/visual_inventory_end_detection.cpp

包含路径:

  • src
  • third_party/percipio/common (修复 json11.hpp 引用)

依赖: OpenCV, Open3D

2. Main Executable (image_capture)

类型: 可执行文件

主要源文件:

  • src/main.cpp
  • src/camera/ty_multi_camera_capture.cpp
  • src/camera/mvs_multi_camera_capture.cpp
  • src/device/device_manager.cpp
  • src/redis/redis_communicator.cpp
  • src/task/task_manager.cpp
  • src/vision/vision_controller.cpp
  • src/common/log_manager.cpp
  • src/common/config_manager.cpp
  • src/gui/mainwindow.cpp / .h / .ui

链接的库:

  • algorithm_lib (项目内部算法库)
  • cpp_api_lib (相机 SDK C++ API 封装)
  • tycam (相机 SDK 动态库)
  • ${OpenCV_LIBS} (OpenCV 库)
  • Open3D::Open3D (Open3D 库)
  • Qt6::CoreQt6::Widgets (Qt 框架)
  • MvCameraControl.lib (海康 MVS SDK)

测试配置

  • 选项: BUILD_TESTS (默认 ON)
  • 测试目录: tests/ (通过 add_subdirectory 添加)

CMake 模块详解

1. CompilerOptions.cmake

C++ 标准

  • 标准: C++17
  • 要求: 必须支持

Qt 自动化工具

CMAKE_AUTOMOC ON    # 自动 Meta-Object Compiler
CMAKE_AUTORCC ON    # 自动 Resource Compiler
CMAKE_AUTOUIC ON    # 自动 UI Compiler

编译器优化选项 (MSVC)

Release 模式 (默认):

/O2        # 优化速度
/Ob2       # 内联任何合适的函数
/Oi        # 启用内建函数
/Ot        # 代码速度优先
/Oy        # 省略帧指针
/GL        # 全局程序优化

Debug 模式:

/Od        # 禁用优化
/Zi        # 生成完整调试信息

其他设置

  • 定义: OPENCV_DEPENDENCIES
  • compile_commands.json: 自动生成(用于 IDE 智能提示)

2. Dependencies.cmake

Qt6 配置

find_package(Qt6 REQUIRED COMPONENTS Widgets)

OpenCV 配置

find_package(OpenCV REQUIRED)

Open3D 配置

find_package(Open3D REQUIRED)

用于点云处理和算法运算。


3. PercipioSDK.cmake

相机 SDK 路径配置

CAMPORT3_ROOT     = ${CMAKE_CURRENT_SOURCE_DIR}/camera_sdk
CAMPORT3_LIB_DIR  = ${CAMPORT3_ROOT}/lib/win/x64

导入 tycam 动态库

add_library(tycam SHARED IMPORTED)

C++ API 封装库 (cpp_api_lib)

类型: 静态库

源文件: camera_sdk/sample_v2/cpp/*, camera_sdk/common/*

依赖: OpenCV


构建流程

配置项目

cd image_capture/build
cmake ..

可选参数:

-DOpenCV_DIR=<path>             # 指定 OpenCV 路径
-DQt6_DIR=<path>                # 指定 Qt6 路径
-DOpen3D_DIR=<path>             # 指定 Open3D 路径

编译项目

cmake --build . --config Release
# 或
cmake --build . --config Debug

依赖项总结

依赖项 版本要求 用途
CMake ≥ 3.10 构建系统
C++ C++17 编程语言标准
Qt6 Widgets 组件 GUI 框架
OpenCV 4.x 图像处理
Open3D 0.17+ 3D点云处理
Percipio SDK tycam.dll 相机驱动
MSVC VS2022 (v143) 编译器

维护建议

  1. 环境一致性: 确保所有依赖项Qt, OpenCV, Open3D都是使用 MSVC 编译的 x64 版本。
  2. DLL 管理: 运行时确保所有必要的 DLL 都在可执行文件目录下。
  3. 版本检测: 保持 Open3D 和 OpenCV 版本的一致性,避免 ABI 冲突。

文档更新时间: 2025-12-19