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

7.7 KiB
Raw Blame History

AGV 路径跟踪系统 - 编译说明

本文档提供完整的编译说明,包括 Qt6 GUI 应用程序和 CAN 通信模块。

📋 目录


系统要求

必需组件

  • 编译器:
    • 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 官网 下载并安装 Qt6

  • 安装路径示例: C:\Qt\6.10.1
  • 选择组件: MinGW 64-bit, Qt6 Widgets

步骤 2: 清理构建目录

cd build
rm -rf *
cd ..

步骤 3: 配置 CMake

方法 1: 使用完整路径(推荐)

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: 设置环境变量

# 设置 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: 编译

# 使用多线程编译(-j4 表示 4 个线程)
cmake --build . -j4

# 或者指定 Release 模式
cmake --build . --config Release -j4

步骤 5: 验证

检查生成的可执行文件:

ls -lh agv_qt_gui.exe
# 应该显示类似: -rwxr-xr-x 1 user group 558K Nov 27 13:33 agv_qt_gui.exe

步骤 6: 运行

# 直接运行(需要 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

配置和编译

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

运行

# 添加 Qt DLL 路径
set PATH=C:\Qt\6.10.1\msvc2019_64\bin;%PATH%

# 运行
Release\agv_qt_gui.exe

Linux

步骤 1: 安装依赖

Ubuntu/Debian:

sudo apt update
sudo apt install build-essential cmake qt6-base-dev

Fedora:

sudo dnf install gcc-c++ cmake qt6-qtbase-devel

Arch Linux:

sudo pacman -S base-devel cmake qt6-base

步骤 2: 编译

mkdir -p build && cd build
cmake ..
make -j$(nproc)

步骤 3: 运行

./agv_qt_gui

命令行程序编译

如果只需要编译命令行程序(不含 Qt GUI可以使用更简单的方法

基本编译

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

cmake -DCMAKE_PREFIX_PATH=C:/Qt/6.10.1/mingw_64 ..

方法 2: 设置环境变量

# 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

# 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 部署指南


问题 4: 编译时提示程序正在运行

错误信息:

cannot create agv_qt_gui.exe: Permission denied

解决方案: 关闭正在运行的 agv_qt_gui.exe 进程:

Windows 任务管理器:

  1. Ctrl + Shift + Esc
  2. 找到 agv_qt_gui.exe
  3. 右键 → 结束任务

命令行:

# 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 官网 下载最新版本

Linux:

# 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 安装

# 检查 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
# 应显示文件存在

检查编译器

# 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

cmake --version
# 应输出: cmake version 3.10 或更高

清理构建

如果需要重新开始:

# 清理构建目录
cd build
rm -rf *

# 或者删除并重建
cd ..
rm -rf build
mkdir build
cd build

构建配置选项

调试模式 vs 发布模式

# Debug 模式(包含调试符号,未优化)
cmake -DCMAKE_BUILD_TYPE=Debug ..
cmake --build .

# Release 模式(优化,无调试符号)
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .

指定安装路径

cmake -DCMAKE_INSTALL_PREFIX=/usr/local ..
cmake --build .
sudo cmake --install .

只构建特定目标

# 只构建 Qt GUI
cmake --build . --target agv_qt_gui

# 只构建 Curtis 演示
cmake --build . --target curtis_demo

下一步


最后更新: 2025-11-27 Qt 版本: 6.10.1 CMake 版本: 3.10+ 编译器: MinGW 13.1.0, GCC 9.0+, MSVC 2019+