5.5 KiB
5.5 KiB
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/ 目录下的三个模块文件组织:
- CompilerOptions.cmake - 编译器和全局设置
- Dependencies.cmake - Qt6、OpenCV、Open3D 依赖
- PercipioSDK.cmake - 图漾相机 SDK 配置
库和可执行文件
1. Algorithm Library (algorithm_lib)
类型: 静态库
源文件:
src/algorithm/core/detection_base.cppsrc/algorithm/core/detection_result.cppsrc/algorithm/utils/image_processor.cppsrc/algorithm/detections/slot_occupancy_detection.cppsrc/algorithm/detections/pallet_offset_detection.cppsrc/algorithm/detections/beam_rack_deflection_detection.cppsrc/algorithm/detections/visual_inventory_detection.cppsrc/algorithm/detections/visual_inventory_end_detection.cpp
包含路径:
srcthird_party/percipio/common(修复 json11.hpp 引用)
依赖: OpenCV, Open3D
2. Main Executable (image_capture)
类型: 可执行文件
主要源文件:
src/main.cppsrc/camera/ty_multi_camera_capture.cppsrc/camera/mvs_multi_camera_capture.cppsrc/device/device_manager.cppsrc/redis/redis_communicator.cppsrc/task/task_manager.cppsrc/vision/vision_controller.cppsrc/common/log_manager.cppsrc/common/config_manager.cppsrc/gui/mainwindow.cpp/.h/.ui
链接的库:
algorithm_lib(项目内部算法库)cpp_api_lib(相机 SDK C++ API 封装)tycam(相机 SDK 动态库)${OpenCV_LIBS}(OpenCV 库)Open3D::Open3D(Open3D 库)Qt6::Core和Qt6::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) | 编译器 |
维护建议
- 环境一致性: 确保所有依赖项(Qt, OpenCV, Open3D)都是使用 MSVC 编译的 x64 版本。
- DLL 管理: 运行时确保所有必要的 DLL 都在可执行文件目录下。
- 版本检测: 保持 Open3D 和 OpenCV 版本的一致性,避免 ABI 冲突。
文档更新时间: 2025-12-19