拷贝托盘库系统架构
This commit is contained in:
221
docs/cmake_configuration_summary.md
Normal file
221
docs/cmake_configuration_summary.md
Normal file
@@ -0,0 +1,221 @@
|
||||
# CMake 配置文档
|
||||
|
||||
本文档总结了 `image_capture` 项目的 CMake 构建系统配置。
|
||||
|
||||
---
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
image_capture/
|
||||
├── CMakeLists.txt # 主构建配置文件
|
||||
└── cmake/ # CMake 模块目录
|
||||
├── CompilerOptions.cmake # 编译器选项配置
|
||||
├── Dependencies.cmake # 外部依赖管理
|
||||
└── PercipioSDK.cmake # 相机 SDK 配置
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 主配置文件:[CMakeLists.txt](file:///d:/Git/stereo_warehouse_inspection/image_capture/CMakeLists.txt)
|
||||
|
||||
### 基本信息
|
||||
- **CMake 最低版本**: 3.10
|
||||
- **项目名称**: `image_capture`
|
||||
- **编程语言**: C++
|
||||
- **构建生成器**: Visual Studio 17 2022 (MSVC)
|
||||
|
||||
### 输出目录
|
||||
```cmake
|
||||
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::Core` 和 `Qt6::Widgets` (Qt 框架)
|
||||
- `MvCameraControl.lib` (海康 MVS SDK)
|
||||
|
||||
### 测试配置
|
||||
- **选项**: `BUILD_TESTS` (默认 ON)
|
||||
- **测试目录**: `tests/` (通过 `add_subdirectory` 添加)
|
||||
|
||||
---
|
||||
|
||||
## CMake 模块详解
|
||||
|
||||
### 1. [CompilerOptions.cmake](file:///d:/Git/stereo_warehouse_inspection/image_capture/cmake/CompilerOptions.cmake)
|
||||
|
||||
#### C++ 标准
|
||||
- **标准**: C++17
|
||||
- **要求**: 必须支持
|
||||
|
||||
#### Qt 自动化工具
|
||||
```cmake
|
||||
CMAKE_AUTOMOC ON # 自动 Meta-Object Compiler
|
||||
CMAKE_AUTORCC ON # 自动 Resource Compiler
|
||||
CMAKE_AUTOUIC ON # 自动 UI Compiler
|
||||
```
|
||||
|
||||
#### 编译器优化选项 (MSVC)
|
||||
|
||||
**Release 模式** (默认):
|
||||
```cmake
|
||||
/O2 # 优化速度
|
||||
/Ob2 # 内联任何合适的函数
|
||||
/Oi # 启用内建函数
|
||||
/Ot # 代码速度优先
|
||||
/Oy # 省略帧指针
|
||||
/GL # 全局程序优化
|
||||
```
|
||||
|
||||
**Debug 模式**:
|
||||
```cmake
|
||||
/Od # 禁用优化
|
||||
/Zi # 生成完整调试信息
|
||||
```
|
||||
|
||||
#### 其他设置
|
||||
- **定义**: `OPENCV_DEPENDENCIES`
|
||||
- **compile_commands.json**: 自动生成(用于 IDE 智能提示)
|
||||
|
||||
---
|
||||
|
||||
### 2. [Dependencies.cmake](file:///d:/Git/stereo_warehouse_inspection/image_capture/cmake/Dependencies.cmake)
|
||||
|
||||
#### Qt6 配置
|
||||
```cmake
|
||||
find_package(Qt6 REQUIRED COMPONENTS Widgets)
|
||||
```
|
||||
|
||||
#### OpenCV 配置
|
||||
```cmake
|
||||
find_package(OpenCV REQUIRED)
|
||||
```
|
||||
|
||||
#### Open3D 配置
|
||||
```cmake
|
||||
find_package(Open3D REQUIRED)
|
||||
```
|
||||
用于点云处理和算法运算。
|
||||
|
||||
---
|
||||
|
||||
### 3. [PercipioSDK.cmake](file:///d:/Git/stereo_warehouse_inspection/image_capture/cmake/PercipioSDK.cmake)
|
||||
|
||||
#### 相机 SDK 路径配置
|
||||
```cmake
|
||||
CAMPORT3_ROOT = ${CMAKE_CURRENT_SOURCE_DIR}/camera_sdk
|
||||
CAMPORT3_LIB_DIR = ${CAMPORT3_ROOT}/lib/win/x64
|
||||
```
|
||||
|
||||
#### 导入 tycam 动态库
|
||||
```cmake
|
||||
add_library(tycam SHARED IMPORTED)
|
||||
```
|
||||
|
||||
#### C++ API 封装库 (`cpp_api_lib`)
|
||||
**类型**: 静态库
|
||||
|
||||
**源文件**:
|
||||
`camera_sdk/sample_v2/cpp/*`, `camera_sdk/common/*`
|
||||
|
||||
**依赖**: OpenCV
|
||||
|
||||
---
|
||||
|
||||
## 构建流程
|
||||
|
||||
### 配置项目
|
||||
```bash
|
||||
cd image_capture/build
|
||||
cmake ..
|
||||
```
|
||||
|
||||
可选参数:
|
||||
```bash
|
||||
-DOpenCV_DIR=<path> # 指定 OpenCV 路径
|
||||
-DQt6_DIR=<path> # 指定 Qt6 路径
|
||||
-DOpen3D_DIR=<path> # 指定 Open3D 路径
|
||||
```
|
||||
|
||||
### 编译项目
|
||||
```bash
|
||||
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*
|
||||
Reference in New Issue
Block a user