第2章:开发环境搭建(Windows)
说实话,搭建开发环境这事儿,看着简单,但坑是真不少。我见过太多人卡在这一步,源码下好了编译不过,折腾一整天心态就崩了。今天我就带你一步步走,把VS2022、Git、ArduPilot和Mission Planner的源码都安排明白。
2.1 安装Visual Studio 2022
为什么选VS2022?因为它是Windows上最稳的IDE,没有之一。Mission Planner的源码是C#写的,VS2022对C#的支持可以说是亲儿子级别的。
下载地址:Visual Studio 2022 Community版(免费,个人开发者够用了)
安装时要注意,别一股脑全勾上。我建议你只选这几个工作负载:
- .NET桌面开发 —— 必选,Mission Planner就是基于.NET Framework的
- 使用C++的桌面开发 —— 可选,但建议装,ArduPilot的某些工具链会用到
- ASP.NET和Web开发 —— 如果你以后想写Web版规划器,可以勾上
我的小技巧:安装路径别改,默认C盘就行。我以前非要装D盘,结果各种权限问题,折腾了两小时。嗯,血的教训。
2.2 安装Git
Git是版本控制的标配,没有它你根本没法跟ArduPilot社区协作。下载地址我就不贴了,直接搜"Git for Windows"就行。
安装过程有几个关键点:
- 选择默认编辑器:选VS Code或者Notepad++,别选Vim(除非你真的很熟)
- 调整PATH环境:选"Git from the command line and also from 3rd-party software"
- 换行符处理:选"Checkout Windows-style, commit Unix-style line endings"
注意:换行符这个选项很重要!ArduPilot的源码是Unix风格换行,如果你选错了,编译时会报一堆莫名其妙的错误。我曾经因为这个折腾了一整个下午。
2.3 克隆ArduPilot源码
好,现在VS2022和Git都装好了。我们开始拉代码。
打开Git Bash(或者CMD),找个你喜欢的目录,比如 D:\Projects,然后执行:
git clone https://github.com/ArduPilot/ardupilot.git
cd ardupilot
git submodule update --init --recursive
这里有个坑:ArduPilot的仓库很大,包含了很多子模块。直接clone可能会很慢,甚至超时。我建议你这么做:
- 先clone主仓库(不带子模块)
- 再单独拉子模块
具体命令:
git clone --depth 1 https://github.com/ArduPilot/ardupilot.git
cd ardupilot
git submodule init
git submodule update --depth 1
--depth 1 参数只拉取最新版本,不拉历史记录。这样速度快很多,而且我们做二次开发,一般也不需要历史记录。
验证是否成功:进入 ardupilot/libraries 目录,看看有没有 AP_HAL、AP_Math 这些文件夹。有就说明拉对了。
2.4 克隆Mission Planner源码
Mission Planner的源码在另一个仓库里。注意,不是ArduPilot官方仓库,而是社区维护的。
git clone https://github.com/ArduPilot/MissionPlanner.git
这个仓库比ArduPilot小得多,几秒钟就拉完了。拉完之后,你会看到这些核心目录:
| 目录/文件 | 说明 |
|---|---|
MissionPlanner.csproj |
项目文件,双击就能用VS2022打开 |
ExtLibs/ |
第三方库,比如MAVLink、GMap.NET等 |
GCSViews/ |
界面代码,我们二次开发主要改这里 |
Utilities/ |
工具类,比如日志、配置读写等 |
我的习惯:我会把ArduPilot和Mission Planner放在同一个父目录下,比如 D:\Projects\ardupilot 和 D:\Projects\MissionPlanner。这样方便后续做联合调试。
2.5 编译Mission Planner
源码拉好了,我们来试试能不能编译通过。
- 双击
MissionPlanner.csproj,VS2022会自动打开 - 在解决方案资源管理器里,右键解决方案,选"还原NuGet包"
- 按
F6或者点"生成" -> "生成解决方案"
第一次编译会比较慢,因为要下载依赖包。如果一切顺利,你应该能看到"生成成功"的提示。
常见问题:
- NuGet包还原失败:检查网络,或者手动设置NuGet源为
https://api.nuget.org/v3/index.json - 缺少.NET Framework版本:Mission Planner需要.NET Framework 4.7.2或更高,去微软官网下载安装
- 编译报错"MAVLink"相关:可能是子模块没拉全,重新执行
git submodule update --init --recursive
2.6 知识体系总览
说了这么多,你可能有点晕。没关系,我画了张图,帮你理清整个开发环境的结构:
你看,整个流程其实就三步:装好VS2022和Git,拉两个仓库的代码,然后编译验证。每一步都有坑,但跟着我上面的步骤走,应该不会出大问题。
最后说一句:环境搭建是磨刀不误砍柴工。我见过太多人急着写代码,结果环境没配好,编译报错就放弃了。花一个小时把环境搭稳,后面能省你十个小时的排查时间。