Windows下QGroundControl二次开发问题汇总
前段时间因为项目要求涉及了一下QGC地面站的二次开发,开发难度先不提,环境搭建遇到了很多问题,几乎网上能搜到的问题都遇到了一遍,在这里总结一下。
一、QGC源码版本选择与下载
首先进入QGC官网链接,点击右上角download选择source code进入到GitHub网页,此时Branch的默认版本是master,这个并不是我需要的版本,因为master的README里面并没有写具体的软件要求。点击master切换成3.2版本,网页向下查看README,可以发现3.2版本的README里面比起master 的要求具体了很多。当然3.2版本是我自己的选择,选其他版本也是可以的,但还是建议选择有明确软件版本要求的。
阅读README可以发现,QGC3.2版本的编译需要安装Qt和VS2015,版本要求分别是Desktop Qt 5.7.1 MSVC2015 32bit和VS 2015 32 bit。
接下来就是QGC源码的下载了。也许这对一部分人来说不是问题,但是对我这个小白来说卡在下载这部分卡了半天。下面总结了一下下载历程:
-
方法一: 下载并安装GitHub客户端,在网页上点击clone or download,选择在desktop打开,clone之后下载代码就是完整的代码了。缺点是客户端下载速度太慢了,而且似乎不支持断点续传,总是下到一半就失败然后无法下载。能够魔法上网的同学可以试试这种办法。
-
方法二: 没有魔法上网渠道,就只能另寻他路了。在国内网站码云上,我找到了QGC的源码下载,奔跑的乌龟,选择3.2版本。点击download就可以下载。一个问题是这样下载下来的zip是不完整的,会缺少一些驱动,比如mavlink和gps驱动,解压后点进这两个文件夹是空的。这种情况也在README文件开头提到,不使用git下载下来的代码就是不完整的。由于不能魔法上网,补救方法就是单独下载这两个文件夹,再解压进对应的位置。mavlink包含v1.0和v2.0,建议两者都下载下来。目前我在使用过程中补上这mavlink和GPS驱动就能编译QGC了,如果发现还有遗落的文件可以自己补下。
mavlink的路径是…\qgroundcontrol\libs\mavlink\include\mavlink
gps驱动的路径是…\qgroundcontrol\src\GPS\Drivers
到这里QGroundControl的源码就完完整整地下载完成了。
二、Qt5.7.1和VS2015的下载和使用
在第一部分中,我们已经知道要下载5.7.1 MSVC2015版本的Qt和2015 X86版本的VS。QGC对软件版本的要求非常严格,我尝试了Qt和VS的更高版本,比如Qt5.9.4和VS2017,都是不能编译成功的,还是老老实实地根据README里面的要求来。
Qt的下载可以在官网下,下载地址,选择下图红框内的版本就行了。
Visual Studio目前最新的版本是2017了,巨硬把2015版本下载藏了起来,如果要从官网下载还得费一点工夫。
-
进入VS官网,点击网页最上端的下载,进入2017的下载页面。
-
进入2017版的下载页面后网页向下划动,能够找到旧版本的下载入口。
-
点击VS2015,展开下载页面点击下载就可以进入下载页面了,期间可能会要求你登陆MSDN之类的,登陆一下就好。下载VS2015第一个X86版本就行,可以把语言换成简体中文。
这里Qt和VS的下载就完成了,有点啰嗦,也是为了尽量详细,跟着文章能够一次完成。
除了Qt和VS的安装,还需要安装调试器windbg,才能完成环境搭建。这篇文章讲的非常详细,一步步来就行。Qt5.7 + VS2015 环境搭建。如果准备在Qt creator中写程序,VS安装完就好,不需要进行文章中的额外配置了。
三、开发过程中的几个小问题
打开qgroundcontrol文件夹,点击qgroundcontrol.pro文件,点击左下角绿色小按钮就可以…运行失败(汗)。开发过程中还是遇到了很多小问题,感觉别人遇到的遇不到的我全碰上了。
- 问题1: Qt打开后假死/卡顿/鼠标点击没有反应。
这个问题是显卡问题,运行QtCreator的时候不支持某些显卡或者不支持高性能图形处理器,需要降低显卡性能。这是解决方法,感谢这位大佬。
https://blog.csdn.net/Hxj_CSDN/article/details/80630420
NVDIA控制面板——>管理3D设置——>首选图行处理器——>改为自动选择 - 问题2: 运行提示’rc’不是内部或外部命令/Qt: error lnk1158 无法运行rc.exe/jom退出
原因是缺少rc.exe和rc.dll,或者没有添加路径,这是解决方法,感谢这位大佬。
https://blog.csdn.net/jacke121/article/details/78359820
四、总结
其实该说的都已经说完了,整个环境搭建到能成功编译花了大概两天时间吧,要不是项目要求,这么多问题我早就放弃了。总结下来就是问题出现时,要逐步排查,比如QGC编译过程中退出,报错报的很复杂,我重新写了一个helloworld再编译,错误很快就定位在’rc’缺失上了,补上之后就可以成功运行QGC了。还有面对一个project,要先阅读README,能提前避免很多问题,不要看到英文就畏缩不前。