2. 开发环境搭建:Qt Creator安装、CMake配置、编译器选择、源码下载与编译
说实话,QGC 的二次开发环境搭建,是很多新手第一个卡住的地方。我见过不少朋友,代码逻辑都理清了,结果卡在编译上,一卡就是一整天。其实说白了,这套环境并不复杂,但有几个细节确实容易踩坑。今天我就把这几步拆开揉碎了讲清楚。
2.1 工具链概览
在动手之前,我们先搞清楚需要哪些东西。QGC 是一个基于 Qt 的 C++ 项目,所以核心工具链就三样:Qt Creator(IDE)、CMake(构建系统)、编译器(把代码变成可执行文件)。
我习惯把这三者的关系比作一个工厂流水线:
- Qt Creator 是车间主任,负责调度和管理
- CMake 是工艺图纸,告诉机器怎么组装
- 编译器 是机床,真正干活的那个
这三样东西版本要匹配,否则就会出各种奇怪的问题。嗯,这里要特别注意。
核心原则:QGC 官方推荐的 Qt 版本是 5.15.x,CMake 最低 3.16,编译器建议用 GCC 9+(Linux)或 MSVC 2019(Windows)。别问我为什么不用 Qt 6,目前 QGC 对 Qt 6 的支持还在实验阶段,我建议你暂时别碰。
2.2 Qt Creator 安装
Qt Creator 的安装其实很简单,但有个坑——千万别只装 IDE。很多人下载了 Qt Creator 本体,结果发现编译不了,因为缺少 Qt 库和工具链。
正确的做法是:
- 去 Qt 官网下载 Qt Online Installer
- 安装时选择 Qt 5.15.2(LTS 版本,最稳)
- 在组件选择页面,务必勾选:
MSVC 2019 64-bit(Windows 用户)MinGW 8.1.0 64-bit(备选)Qt Charts(QGC 依赖这个)Qt Location(地图相关)Qt WebEngine(内置浏览器)
我曾经有一次偷懒没勾 Qt Charts,结果编译到一半报错说找不到 QChartView。当时我还以为是代码问题,折腾了半小时才发现是组件没装全。所以,安装时多花两分钟勾选,后面能省两小时。
2.3 CMake 配置
QGC 从 4.0 版本开始全面转向 CMake 构建系统。你可能会问:为什么不用 qmake?我个人觉得,CMake 在跨平台和第三方库管理上确实更灵活。
配置 CMake 时,有几个关键变量需要设置:
| CMake 变量 | 说明 | 推荐值 |
|---|---|---|
CMAKE_PREFIX_PATH |
Qt 安装路径 | C:/Qt/5.15.2/msvc2019_64 |
CMAKE_BUILD_TYPE |
构建类型 | Debug(开发用) |
QT_DIR |
Qt 配置目录 | 自动检测,一般不用手动设 |
在 Qt Creator 中打开 CMakeLists.txt 后,它会自动检测 CMake 版本。如果提示版本过低,去 cmake.org 下载最新版就行。我个人习惯用 CMake 3.20+,兼容性最好。
2.4 编译器选择
编译器这块,不同平台差别很大。我按平台分别说一下:
Windows
- 首选:MSVC 2019 64-bit。这是 Visual Studio 的编译器,性能好,调试方便。
- 备选:MinGW 8.1.0。如果你不想装 Visual Studio,可以用这个。但注意,MinGW 编译出来的程序在某些 API 调用上可能有点小问题。
Linux
- GCC 9+。Ubuntu 20.04 默认就是 GCC 9,直接
sudo apt install build-essential就行。 - Clang 也可以,但我没怎么用过,不做推荐。
macOS
- Clang(Xcode 自带)。macOS 上别折腾 GCC,用系统自带的 Clang 最省心。
小技巧:在 Qt Creator 的「Kits」选项卡里,可以同时配置多个编译器。我一般会配一个 MSVC 用于正式编译,再配一个 MinGW 用于快速测试。切换起来很方便。
2.5 源码下载与编译
源码下载,我建议直接从 GitHub 克隆。别去下载 zip 包,因为后续更新不方便。
git clone --recursive https://github.com/mavlink/qgroundcontrol.git
cd qgroundcontrol
git checkout Stable_4.2 # 选一个稳定分支
注意 --recursive 参数,它会同时拉取所有子模块。QGC 依赖很多第三方库,比如 MAVSDK、libcurl 等,这些都在子模块里。如果忘了加这个参数,编译时会报一堆找不到头文件的错误。
克隆完成后,用 Qt Creator 打开项目根目录的 CMakeLists.txt。它会自动加载项目结构,这个过程可能需要几分钟,因为 CMake 要解析所有依赖。
编译时,我建议先选 Debug 模式。虽然 Release 模式运行更快,但 Debug 模式下你能看到完整的调试信息,对二次开发来说太重要了。
第一次编译时间:大概 20-40 分钟,取决于你的机器配置。别着急,去泡杯咖啡。后续增量编译就快多了,一般 1-3 分钟。
2.6 常见编译错误与解决
编译过程中难免遇到问题。我把最常见的几个列出来:
| 错误信息 | 原因 | 解决方法 |
|---|---|---|
Could not find Qt5Charts |
未安装 Qt Charts 组件 | 重新运行安装程序,勾选 Qt Charts |
fatal error: mavlink/v2.0/... |
子模块未初始化 | 执行 git submodule update --init --recursive |
CMAKE_CXX_COMPILER not set |
未选择编译器 | 在 Qt Creator 的 Kits 中指定编译器 |
LNK1104: cannot open file 'qtmaind.lib' |
Qt 库路径未正确配置 | 检查 CMAKE_PREFIX_PATH 是否指向正确的 Qt 目录 |
嗯,这里要特别说一下子模块的问题。我曾经有一次拉完代码直接编译,结果报了一堆 MAVLink 相关的错误。当时我还以为是代码有问题,后来才发现是忘了 --recursive。所以,克隆的时候一定要加上这个参数,或者克隆后手动执行 git submodule update。
2.7 环境验证
编译成功后,你会得到一个可执行文件。在 Windows 上是 qgroundcontrol.exe,在 Linux/macOS 上是 qgroundcontrol。双击运行,如果能正常启动并看到主界面,说明环境搭建成功了。
我建议你做一个简单的验证:打开「设置」→「模拟连接」,连接到一个虚拟无人机。如果能正常显示遥测数据,那恭喜你,开发环境已经完全就绪了。
2.8 小结
开发环境搭建这件事,说白了就是一次性的体力活。只要按照上面的步骤来,基本不会出大问题。我个人觉得,最关键的还是两点:Qt 组件要装全,子模块要拉完整。这两点做到了,后面的编译就是顺理成章的事。