Files
RCS-3000/docs/guides/BUILD_INSTRUCTIONS.md
2025-11-27 14:22:15 +08:00

425 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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+