【开发备忘】QGroundControl编译

本文记录在windows下编译最新版QGC的过程
Qt版本为5.15.2,编译器为MSVC2015

1、Qt环境配置

尽管目前已有Qt6,但是QGC官网明确强调了仅可使用Qt 5.15.2,因此首先需要安装该版本Qt。
【开发备忘】QGroundControl编译_第1张图片
好几年没碰Qt,据说5.12以后就没有离线安装包,只能在线安装,我在官网找了好久确实没有。下载在线安装工具并打开,可以进行多版本的open source版Qt安装,根据对话框首先需要注册并登录账号。
【开发备忘】QGroundControl编译_第2张图片
在选择具体安装内容时,除了默认的Qt Creator等,关键是选择合适版本的Qt编译器和模块。下图是QGC官网教程提供,其中对应Qt 5.15.2选择了MSVC 2019。一般来说需要有vs2019,而我电脑上安装的是vs2017,但是之前单独安装了msvcr140,即vs2015对应的编译环境,所以我选择的是MSVC 2015。此外QGC额外需要Qt Charts模块,如果在这一步忘记勾选,可以在安装完成后Qt目录下通过MaintenanceTool.exe进行添加。
【开发备忘】QGroundControl编译_第3张图片
安装完成后,还需要添加环境变量,如果没有这一步,最后编译的QGC可执行程序无法运行。需要添加到path中的路径有两个,如下图所示。
在这里插入图片描述

2、QGC源码下载

QGC源码在github上,官网介绍了通过git进行下载的方式,对于网络连接比较快速稳定的情况,可以使用该方法。
【开发备忘】QGroundControl编译_第4张图片
然而我实际上连接总是出现问题,对于这种情况,可以直接在github页面进行下载。
【开发备忘】QGroundControl编译_第5张图片
需要注意的是这个项目有几个依赖项目,在lib文件夹中,上述git代码第二句的作用就是下载依赖项,若不下载则相关文件夹为空。可以逐个下载,然后放在对应文件夹中。如果有漏掉,在下一步编译时会有提示,再补充即可。
【开发备忘】QGroundControl编译_第6张图片

3、编译

通过Qt Creator编译是最方便的,打开qgroundcontrol.pro项目,如下图所示。
【开发备忘】QGroundControl编译_第7张图片
下面配置编译环境,点击Manage Kits选择编译器和编译条件,我前面下载的是msvc2015,这里选择对应64位编译器即可。另外,有教程提到Debugger的选择,建议提前安装Windows 10 SDK以使用对应的调试器。我之前有安装,这里没有特地操作。
【开发备忘】QGroundControl编译_第8张图片
然后构建编译工程,会在Build directory生成工程文件夹。
【开发备忘】QGroundControl编译_第9张图片
下面通过左下角的锤子按钮可以开始编译。
【开发备忘】QGroundControl编译_第10张图片
编译过程是最多意外的,与各个机器独特的环境和工程版本有关,会遇到各色问题,我遇到了三个,在此记录。

1、C2220: 警告被视为错误 - 没有生成“object”文件
这个问题就是生成错误,需要看同一位置的警告内容。我一开始尝试过通过配置编译参数,忽略这种警告,但是没有成功,只能处理源码警告。
在我的情况,是下图所示文件对应216、217行,出现了赋值float转double的警告,我修改源码消除了该警告。再编译随即排除了该错误。
【开发备忘】QGroundControl编译_第11张图片
2、字符相关问题
由于我的电脑为中文系统,字符编码与原工程不同,会报相关错误。在主菜单“编辑”——》“select encoding”中选择GB2312,并保存即可。

3、jom问题
提示报错为Error while building/deploying project untitled1 (kit: Desktop Qt 5.15.2 MSVC2015 64bit)
When executing step “Make”

这是说在编译的“Make”部分产生了问题,这一步默认使用jom,需要修改为nmake。在菜单栏找到首选项(或点击Manage Kits),左侧选择“构建与运行”,取消勾选右侧“使用jom代替nmake”的选项,应用即可。
【开发备忘】QGroundControl编译_第12张图片

【开发备忘】QGroundControl编译_第13张图片
完整编译需要一定时间,结束后可能提示警告warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library,这可以不管。
在生成文件夹中staging文件夹下的QGroundControl.exe就是最终输出程序,点击弹出控制台窗口,可能需要稍等片刻,然后出现可以操作的QGC窗体,说明编译成功!

你可能感兴趣的:(开发备忘,qt,windows,开发语言)