425 lines
7.7 KiB
Markdown
425 lines
7.7 KiB
Markdown
# AGV 路径跟踪系统 - 编译说明
|
||
|
||
本文档提供完整的编译说明,包括 Qt6 GUI 应用程序和 CAN 通信模块。
|
||
|
||
## 📋 目录
|
||
- [系统要求](#系统要求)
|
||
- [Qt6 GUI 编译(推荐)](#qt6-gui-编译推荐)
|
||
- [命令行程序编译](#命令行程序编译)
|
||
- [常见问题](#常见问题)
|
||
- [验证安装](#验证安装)
|
||
|
||
---
|
||
|
||
## 系统要求
|
||
|
||
### 必需组件
|
||
- **编译器**:
|
||
- Windows: MinGW-w64 13.1+ 或 MSVC 2019+
|
||
- Linux: GCC 9.0+ 或 Clang 10.0+
|
||
- **CMake**: 3.10 或更高版本
|
||
- **C++ 标准**: C++17
|
||
|
||
### Qt6 GUI 所需
|
||
- **Qt6**: 6.x 或更高版本
|
||
- 必需组件: Qt6::Widgets
|
||
- 推荐版本: Qt 6.10.1
|
||
- **编译器匹配**:
|
||
- Qt6 MinGW 版本 → MinGW 编译器
|
||
- Qt6 MSVC 版本 → MSVC 编译器
|
||
|
||
### CAN 通信所需
|
||
- **ControlCAN 库**: lib/ControlCAN.lib
|
||
- **支持的设备**: USBCAN-2A, USBCAN-2C
|
||
|
||
---
|
||
|
||
## Qt6 GUI 编译(推荐)
|
||
|
||
### Windows (MinGW)
|
||
|
||
#### 步骤 1: 安装 Qt6
|
||
|
||
从 [Qt 官网](https://www.qt.io/download) 下载并安装 Qt6:
|
||
- 安装路径示例: `C:\Qt\6.10.1`
|
||
- 选择组件: MinGW 64-bit, Qt6 Widgets
|
||
|
||
#### 步骤 2: 清理构建目录
|
||
|
||
```bash
|
||
cd build
|
||
rm -rf *
|
||
cd ..
|
||
```
|
||
|
||
#### 步骤 3: 配置 CMake
|
||
|
||
**方法 1: 使用完整路径(推荐)**
|
||
```bash
|
||
cd build
|
||
cmake -G "MinGW Makefiles" \
|
||
-DCMAKE_PREFIX_PATH=C:/Qt/6.10.1/mingw_64 \
|
||
-DCMAKE_C_COMPILER=C:/Qt/Tools/mingw1310_64/bin/gcc.exe \
|
||
-DCMAKE_CXX_COMPILER=C:/Qt/Tools/mingw1310_64/bin/g++.exe \
|
||
-DCMAKE_MAKE_PROGRAM=C:/Qt/Tools/mingw1310_64/bin/mingw32-make.exe ..
|
||
```
|
||
|
||
**方法 2: 设置环境变量**
|
||
```bash
|
||
# 设置 Qt 路径
|
||
export CMAKE_PREFIX_PATH=/c/Qt/6.10.1/mingw_64
|
||
export PATH=/c/Qt/Tools/mingw1310_64/bin:$PATH
|
||
|
||
# 配置
|
||
cd build
|
||
cmake -G "MinGW Makefiles" ..
|
||
```
|
||
|
||
#### 步骤 4: 编译
|
||
|
||
```bash
|
||
# 使用多线程编译(-j4 表示 4 个线程)
|
||
cmake --build . -j4
|
||
|
||
# 或者指定 Release 模式
|
||
cmake --build . --config Release -j4
|
||
```
|
||
|
||
#### 步骤 5: 验证
|
||
|
||
检查生成的可执行文件:
|
||
```bash
|
||
ls -lh agv_qt_gui.exe
|
||
# 应该显示类似: -rwxr-xr-x 1 user group 558K Nov 27 13:33 agv_qt_gui.exe
|
||
```
|
||
|
||
#### 步骤 6: 运行
|
||
|
||
```bash
|
||
# 直接运行(需要 Qt DLL 在 PATH 中)
|
||
./agv_qt_gui.exe
|
||
|
||
# 或者添加 Qt bin 目录到 PATH
|
||
export PATH=/c/Qt/6.10.1/mingw_64/bin:$PATH
|
||
./agv_qt_gui.exe
|
||
```
|
||
|
||
---
|
||
|
||
### Windows (MSVC)
|
||
|
||
#### 前提条件
|
||
- 安装 Visual Studio 2019 或 2022
|
||
- 安装 Qt6 MSVC 版本(例如 msvc2019_64)
|
||
|
||
#### 配置和编译
|
||
|
||
```bash
|
||
cd build
|
||
cmake -G "Visual Studio 17 2022" -A x64 \
|
||
-DCMAKE_PREFIX_PATH=C:/Qt/6.10.1/msvc2019_64 ..
|
||
|
||
cmake --build . --config Release -j4
|
||
```
|
||
|
||
#### 运行
|
||
|
||
```bash
|
||
# 添加 Qt DLL 路径
|
||
set PATH=C:\Qt\6.10.1\msvc2019_64\bin;%PATH%
|
||
|
||
# 运行
|
||
Release\agv_qt_gui.exe
|
||
```
|
||
|
||
---
|
||
|
||
### Linux
|
||
|
||
#### 步骤 1: 安装依赖
|
||
|
||
**Ubuntu/Debian:**
|
||
```bash
|
||
sudo apt update
|
||
sudo apt install build-essential cmake qt6-base-dev
|
||
```
|
||
|
||
**Fedora:**
|
||
```bash
|
||
sudo dnf install gcc-c++ cmake qt6-qtbase-devel
|
||
```
|
||
|
||
**Arch Linux:**
|
||
```bash
|
||
sudo pacman -S base-devel cmake qt6-base
|
||
```
|
||
|
||
#### 步骤 2: 编译
|
||
|
||
```bash
|
||
mkdir -p build && cd build
|
||
cmake ..
|
||
make -j$(nproc)
|
||
```
|
||
|
||
#### 步骤 3: 运行
|
||
|
||
```bash
|
||
./agv_qt_gui
|
||
```
|
||
|
||
---
|
||
|
||
## 命令行程序编译
|
||
|
||
如果只需要编译命令行程序(不含 Qt GUI),可以使用更简单的方法:
|
||
|
||
### 基本编译
|
||
|
||
```bash
|
||
cd build
|
||
cmake ..
|
||
cmake --build .
|
||
```
|
||
|
||
### 生成的可执行文件
|
||
|
||
编译完成后,在 `build/` 目录下会生成以下程序:
|
||
|
||
| 程序名称 | 功能描述 |
|
||
|---------|---------|
|
||
| `agv_demo.exe` | 基本路径跟踪演示 |
|
||
| `generate_data.exe` | 生成测试数据 |
|
||
| `generate_smooth_path.exe` | 平滑路径生成器 |
|
||
| `agv_gui.exe` | 控制台 GUI 演示 |
|
||
| `curtis_demo.exe` | Curtis 电机控制器键盘演示 |
|
||
| `curtis_path_tracking_demo.exe` | Curtis 路径跟踪演示 |
|
||
| `agv_qt_gui.exe` | Qt6 图形界面(需要 Qt6) |
|
||
|
||
---
|
||
|
||
## 常见问题
|
||
|
||
### 问题 1: CMake 找不到 Qt6
|
||
|
||
**错误信息:**
|
||
```
|
||
CMake Error at CMakeLists.txt:65 (find_package):
|
||
By not providing "FindQt6.cmake" in CMAKE_MODULE_PATH this project has
|
||
asked CMake to find a package configuration file provided by "Qt6", but
|
||
CMake did not find one.
|
||
```
|
||
|
||
**解决方案:**
|
||
|
||
**方法 1:** 设置 `CMAKE_PREFIX_PATH`
|
||
```bash
|
||
cmake -DCMAKE_PREFIX_PATH=C:/Qt/6.10.1/mingw_64 ..
|
||
```
|
||
|
||
**方法 2:** 设置环境变量
|
||
```bash
|
||
# Windows (Git Bash)
|
||
export CMAKE_PREFIX_PATH=/c/Qt/6.10.1/mingw_64
|
||
|
||
# Windows (CMD)
|
||
set CMAKE_PREFIX_PATH=C:\Qt\6.10.1\mingw_64
|
||
|
||
# Linux
|
||
export CMAKE_PREFIX_PATH=/opt/Qt/6.10.1/gcc_64
|
||
```
|
||
|
||
---
|
||
|
||
### 问题 2: 编译器不匹配
|
||
|
||
**错误信息:**
|
||
```
|
||
error: undefined reference to `__imp__ZN7QWidget...'
|
||
```
|
||
|
||
**原因:** Qt6 MinGW 版本与 MSVC 编译器不兼容。
|
||
|
||
**解决方案:**
|
||
- 使用 MinGW 编译 MinGW 版 Qt6
|
||
- 或安装 MSVC 版 Qt6 并使用 MSVC 编译
|
||
|
||
---
|
||
|
||
### 问题 3: 程序运行时缺少 DLL
|
||
|
||
**错误信息:**
|
||
```
|
||
The code execution cannot proceed because Qt6Core.dll was not found.
|
||
```
|
||
|
||
**解决方案 1:** 添加 Qt bin 目录到 PATH
|
||
```bash
|
||
# Windows (Git Bash)
|
||
export PATH=/c/Qt/6.10.1/mingw_64/bin:$PATH
|
||
|
||
# Windows (CMD)
|
||
set PATH=C:\Qt\6.10.1\mingw_64\bin;%PATH%
|
||
```
|
||
|
||
**解决方案 2:** 部署应用程序(推荐用于发布)
|
||
参见 [Qt6 部署指南](QT6_DEPLOYMENT_GUIDE.md)
|
||
|
||
---
|
||
|
||
### 问题 4: 编译时提示程序正在运行
|
||
|
||
**错误信息:**
|
||
```
|
||
cannot create agv_qt_gui.exe: Permission denied
|
||
```
|
||
|
||
**解决方案:**
|
||
关闭正在运行的 `agv_qt_gui.exe` 进程:
|
||
|
||
**Windows 任务管理器:**
|
||
1. 按 `Ctrl + Shift + Esc`
|
||
2. 找到 `agv_qt_gui.exe`
|
||
3. 右键 → 结束任务
|
||
|
||
**命令行:**
|
||
```bash
|
||
# Windows
|
||
taskkill /F /IM agv_qt_gui.exe
|
||
|
||
# Linux
|
||
pkill -9 agv_qt_gui
|
||
```
|
||
|
||
---
|
||
|
||
### 问题 5: CMake 版本过低
|
||
|
||
**错误信息:**
|
||
```
|
||
CMake 3.5 or higher is required. You are running version 2.8.12
|
||
```
|
||
|
||
**解决方案:**
|
||
更新 CMake:
|
||
|
||
**Windows:**
|
||
从 [CMake 官网](https://cmake.org/download/) 下载最新版本
|
||
|
||
**Linux:**
|
||
```bash
|
||
# Ubuntu (添加官方 PPA)
|
||
sudo apt-get remove cmake
|
||
sudo snap install cmake --classic
|
||
|
||
# 或从源码编译
|
||
wget https://github.com/Kitware/CMake/releases/download/v3.28.0/cmake-3.28.0.tar.gz
|
||
tar -xzvf cmake-3.28.0.tar.gz
|
||
cd cmake-3.28.0
|
||
./bootstrap && make && sudo make install
|
||
```
|
||
|
||
---
|
||
|
||
## 验证安装
|
||
|
||
### 检查 Qt6 安装
|
||
|
||
```bash
|
||
# 检查 qmake
|
||
qmake --version
|
||
# 应输出: QMake version 3.1, Using Qt version 6.x.x
|
||
|
||
# 检查 Qt6Config.cmake
|
||
ls C:/Qt/6.10.1/mingw_64/lib/cmake/Qt6/Qt6Config.cmake
|
||
# 应显示文件存在
|
||
```
|
||
|
||
### 检查编译器
|
||
|
||
```bash
|
||
# MinGW
|
||
gcc --version
|
||
g++ --version
|
||
# 应输出: gcc/g++ (MinGW-W64) 13.1.0 或更高
|
||
|
||
# MSVC (Visual Studio Developer Command Prompt)
|
||
cl
|
||
# 应输出: Microsoft (R) C/C++ Optimizing Compiler Version 19.xx
|
||
```
|
||
|
||
### 检查 CMake
|
||
|
||
```bash
|
||
cmake --version
|
||
# 应输出: cmake version 3.10 或更高
|
||
```
|
||
|
||
---
|
||
|
||
## 清理构建
|
||
|
||
如果需要重新开始:
|
||
|
||
```bash
|
||
# 清理构建目录
|
||
cd build
|
||
rm -rf *
|
||
|
||
# 或者删除并重建
|
||
cd ..
|
||
rm -rf build
|
||
mkdir build
|
||
cd build
|
||
```
|
||
|
||
---
|
||
|
||
## 构建配置选项
|
||
|
||
### 调试模式 vs 发布模式
|
||
|
||
```bash
|
||
# Debug 模式(包含调试符号,未优化)
|
||
cmake -DCMAKE_BUILD_TYPE=Debug ..
|
||
cmake --build .
|
||
|
||
# Release 模式(优化,无调试符号)
|
||
cmake -DCMAKE_BUILD_TYPE=Release ..
|
||
cmake --build .
|
||
```
|
||
|
||
### 指定安装路径
|
||
|
||
```bash
|
||
cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
|
||
cmake --build .
|
||
sudo cmake --install .
|
||
```
|
||
|
||
### 只构建特定目标
|
||
|
||
```bash
|
||
# 只构建 Qt GUI
|
||
cmake --build . --target agv_qt_gui
|
||
|
||
# 只构建 Curtis 演示
|
||
cmake --build . --target curtis_demo
|
||
```
|
||
|
||
---
|
||
|
||
## 下一步
|
||
|
||
- 📖 运行程序: [QUICK_START.md](QUICK_START.md)
|
||
- 🚀 部署应用: [QT6_DEPLOYMENT_GUIDE.md](QT6_DEPLOYMENT_GUIDE.md)
|
||
- 🔧 CAN 通信: [../can/CAN_README.md](../can/CAN_README.md)
|
||
- 🎨 自定义路径: [../custom_path/README.md](../custom_path/README.md)
|
||
|
||
---
|
||
|
||
**最后更新:** 2025-11-27
|
||
**Qt 版本:** 6.10.1
|
||
**CMake 版本:** 3.10+
|
||
**编译器:** MinGW 13.1.0, GCC 9.0+, MSVC 2019+
|