4. 编译环境搭建(Windows篇)
Windows 下编译 QGC,说白了就两条路:MSVC 和 MinGW。我两个都用过,踩过不少坑。今天我把经验摊开讲,你照着做就行。
4.1 编译器选型:MSVC vs MinGW
先别急着装,搞清楚区别再动手。我刚开始也纠结过,后来发现选错了后面全是泪。
| 对比项 | MSVC | MinGW |
|---|---|---|
| 官方推荐 | 是(QGC 主推) | 否(社区方案) |
| 调试体验 | 完美(VS 集成) | 一般(GDB 凑合) |
| 编译速度 | 快(多核优化好) | 慢(单线程居多) |
| 兼容性 | Qt 官方二进制匹配 | 偶尔链接报错 |
| 部署难度 | 低(装好 VS 就行) | 高(要配环境变量) |
我的建议:新手无脑选 MSVC。我在项目中见过太多人用 MinGW 折腾半天,最后换回 MSVC 半小时搞定。
4.2 MSVC 环境搭建(推荐)
4.2.1 安装 Visual Studio
QGC 目前要求 VS 2019 或 2022。我个人习惯用 2022,社区版免费,够用。
- 去官网下载 Visual Studio 2022 Community
- 安装时勾选「使用 C++ 的桌面开发」工作负载
- 右侧「单个组件」里确保勾上:
- MSVC v143 生成工具(x64/x86)
- Windows 10 SDK(或 11 SDK)
- C++ CMake 工具(可选,但建议装)
- 安装路径别改,默认 C 盘就行
注意:安装完一定要重启。我曾经偷懒没重启,结果 cmake 死活找不到编译器,折腾了半小时才发现。
4.2.2 配置 Qt 与 MSVC 的绑定
Qt 安装时记得勾选对应 MSVC 版本的组件。比如你装 VS 2022,Qt 里就要选 MSVC 2019 64-bit 或 MSVC 2022 64-bit。
# 验证 MSVC 是否可用
打开 "x64 Native Tools Command Prompt for VS 2022"
输入:cl
看到 Microsoft (R) C/C++ Optimizing Compiler 版本号 → 成功
嗯,这里要注意:Qt Creator 里要手动设置编译器路径。我见过有人装完 VS 但 Qt Creator 还是用的 MinGW,编译报一堆 undefined reference。
4.2.3 常见 MSVC 编译错误及解决
我整理了几个高频错误,你遇到了直接对照查。
| 错误信息 | 原因 | 解决方案 |
|---|---|---|
fatal error C1083 |
找不到头文件 | 检查 include 路径,确认 Qt 安装正确 |
LNK2019 unresolved external symbol |
链接库缺失 | 在 .pro 文件里加 LIBS += ... |
error C2664 |
参数类型不匹配 | 检查函数签名,QGC 代码有时用旧 API |
fatal error LNK1104 |
无法打开 .lib 文件 | 关闭杀毒软件,或以管理员运行 |
避坑指南:我曾经遇到 LNK2019,查了半天发现是 Qt 版本和 MSVC 不匹配。Qt 5.15.2 配 VS 2022 没问题,但 Qt 5.12 就报错。记住:Qt 版本别太老。
4.3 MinGW 环境搭建(备选)
如果你非要用 MinGW,也行。但我要说一句:QGC 官方对 MinGW 的支持越来越弱,很多新功能只在 MSVC 上测试。
4.3.1 安装 MinGW
- 下载 Qt 在线安装器,选择 MinGW 8.1.0 64-bit 组件
- 或者单独下载 MinGW-w64(推荐用 Qt 自带的,版本匹配)
- 把
mingw64/bin加到系统 PATH
# 验证 MinGW
打开 cmd,输入:g++ --version
看到 g++ (MinGW.org GCC Build-20200218) 8.1.0 → 成功
4.3.2 MinGW 编译 QGC 的坑
我踩过的坑,列出来给你省时间。
- 链接速度慢:MinGW 的 ld 比 MSVC 的 link 慢 3-5 倍,第一次编译 QGC 可能要 40 分钟
- 中文路径报错:MinGW 对中文路径支持差,项目路径不要有中文
- Qt Charts 模块缺失:有些 MinGW 发行版没带 Qt Charts,要手动编译
- Debug 模式崩溃:MinGW 的 debug 库有时和 QGC 的断言冲突
警告:如果你用 MinGW 编译时遇到 undefined reference to `__imp_...',八成是库文件格式不对。MinGW 需要 .a 文件,不是 .lib。我曾经在这上面浪费了一整天。
4.4 核心流程:从源码到可执行文件
不管用哪个编译器,流程都一样。我画了张图,你一看就明白。
4.5 实战:完整编译命令
我直接给你能跑的代码。假设你用的是 MSVC。
# 1. 克隆源码(带子模块)
git clone --recursive https://github.com/mavlink/qgroundcontrol.git
cd qgroundcontrol
# 2. 创建构建目录
mkdir build_msvc
cd build_msvc
# 3. CMake 配置(64位 Release)
cmake .. -G "Visual Studio 17 2022" -A x64 ^
-DCMAKE_PREFIX_PATH=C:/Qt/5.15.2/msvc2019_64 ^
-DCMAKE_BUILD_TYPE=Release
# 4. 编译(用 jom 加速)
jom -j8
# 5. 编译完成后,在 build_msvc/staging 目录找 exe
小技巧:第一次编译建议用 jom -j4,别贪多。我试过 -j16,结果内存爆了,编译到一半卡死。8 核 CPU 用 -j8 最稳。
4.6 环境验证清单
编译前,花 5 分钟检查一下。我每次搭新环境都按这个来。
| 检查项 | 命令 | 预期结果 |
|---|---|---|
| 编译器 | cl /? 或 g++ --version |
显示版本号 |
| CMake | cmake --version |
≥ 3.16 |
| Qt | qmake --version |
显示 Qt 版本 |
| Git | git --version |
≥ 2.20 |
| Python | python --version |
≥ 3.6(用于构建脚本) |
最后说一句:Windows 编译 QGC 最稳的组合是 VS 2022 + Qt 5.15.2 MSVC 2019 64-bit。我前后搭过不下 20 次环境,这个组合从来没翻过车。MinGW 能跑,但没必要跟自己过不去。