QGIS编译--QGIS3.03+VS2017(64)+QT5.92源码编译过程及二次开发准备经验

    已经3年没有接触编码了,因项目需要,开始接触QGIS。经过大半个十一长假,终于在各种文章及QGIS提供的帮助文档的支持下,实现了两个目标:(1)将QGIS在QT+VS的开发环境下,调用运行起来,初步具备二次开发能力;(2)编译QGIS源码,生成qgis.exe,从而能够支持在二次开发的过程中,学习QGIS的代码。从学习过程来看,这是两个相对独立的过程,在实现这两个目标的过程中,得到了QGIS先行者的各种经验支持,但由于QGIS的版本不断在升级,然后其和VS和QT的版本之间存在适配的问题,因此所有经验都只能是启发,这就意味着本文虽然主要是重复,但亦有存在意义。实现这两个目标的过程,比较辛苦,现在想来都觉得不太想重复,为记录自己的经验,也为回馈先行者的分享,特写下此文。

    1、二次开发环境准备

    1)搭建开发环境

    我用的是surface pro 5,硬件的计算能力算不得很好,软件是Windows 10 专业版,以前没有VS环境。

    2)下载相应软件:

    (1)VS 2017下载

    微软公司提供了VS 2017的各类版本下载,其中社区版是免费的,初步分析其功能已经足够支持QGIS的学习,因此我下载使用的是 “社区版”。

      VS 2017的下载地址是:https://visualstudio.microsoft.com/zh-hans/downloads/。

    值得说明的是VS 2017的安装是在线的,从上述网址下载的实际上是VS 2017的安装器,并不是离线安装包,因此正常安装VS 2017需要连接互联网,当然这对于大部分网友而言这不是难事。VS的安装过程可参照https://blog.csdn.net/qq_36556893/article/details/79430133

    当然,有网友整理了离线下载VS 2017的办法https://blog.csdn.net/h8178/article/details/78280202,我试着照做了一下,选择“VS 2017 社区版”,最终形成了一个47.3G的文件夹。文件下载完成后,还没有试着重新安装一遍,是否可行有兴趣的可以试验后反馈一下。

    (2)QGIS的下载

扫描二维码关注公众号,回复: 3478098 查看本文章

    支持QGIS二次开发的下载包括两种,一种是网络在线安装程序OSGeo4W,另一种是QGIS独立安装程序。我先选择的是独立安装程序,安装完毕后,发现大部分网友的教程都是基于OSGeo4W来下载特定的库,因此后来我又使用OSGeo4W再行安装了一遍。个人感觉还是OSGeo4W更实用,想要什么就找什么,当然前提是你知道自己需要什么。

    关于QGIS的下载此文https://blog.csdn.net/xiongjia516/article/details/81668665讲得非常清楚,我完全是按照此文的步骤完成了QGIS的下载安装。

    (3)Qt Visual Studio Tools的安装

      运行安装好了的VS 2017,在选择菜单栏“工具”→“扩展和更新”菜单项后,弹出“扩展和更新”的对话框,在其中搜索qt后,选择Qt Visual Studio Tools并下载。

    下载完毕后,还需要进行安装。下载和安装过程可参照https://jingyan.baidu.com/article/020278115d99b31bcc9ce53f.html。

    3)试着调用QGIS

    在试着调用QGIS的过程中,前期的设置以及代码都是参考此文:https://blog.csdn.net/xiongjia516/article/details/81668665

    4)寻找“.shp”文件并运行

    网上找到的.shp文件,下载并解压缩之后,就可以通过上述代码形成的程序打开地图了。

    2、QGIS源代码编译

    源代码的编译花了我好几天的时间,最终成功编译,殊为不易。

   在编译过程中,我主要参考的是此文:https://blog.csdn.net/quinta_2018_01_09/article/details/79084001。此文虽然写得很全很好,但既然我这种半个小白还是花了这么长的时间,当然还是可以有所补充,个人的经验教训及建议如下:

  1)编译前,强烈建议学习一边QGIS自己出的编译指南,建议学习此文:https://www.cnblogs.com/2008nmj/p/7834513.html。这其中不同组件的版本选择尤其重要。

    2)在配置阶段,运行CMake后,在Configure时,会要求选择编译器,如果OSGeo4W下载的64位的版本,一定要选择Visual Studio 15 2017 X64,而不能选择Visual Studio 15 2017,我就是因为选错了,导致浪费了好多时间,花了很多的时间去调试一些莫名其妙的bug。

    3)配置过程中,会检测不同组件的版本是否符合要求。这个过程中如果确认自己所下载的版本是正确的,不妨注释掉相应的检测命令行,比如我在configure的时候,总是提醒我spatialite 需要version 4.2以上,实际上我通过OSGeo4W下载的是version 4.3的版本,经检查头文件spatialite.h里面的注释也是4.3的,多次下载重装该组件后,试着把这部分检测的命令行注释掉,结果配置成功。

    4)在基于VS 2017编译源代码的过程中,项目实在是太多了,整体上编译一遍似乎没有必要,因此我参照先行者们的经验,也只是留下的9个项目(参考https://blog.csdn.net/quinta_2018_01_09/article/details/79084001,当然在编译过程中,根据需要后面又增加了一个项目qgis_native,不然即使是编译过了,链接也存在问题。

    5)编译过程中,我的经验是一定要对QGIS的编码质量有信心,不要一看编译不过就信马由缰地去根据自己的经验来修改源代码,而是多思考编译器对代码的适应性问题。在编译过程中,我对代码真正有效的修改是VS 2017对utf-8的识别问题,总是提醒代码中有换行符,以及由这个问题所引起的一序列其他的虚假问题。解决办法是在Unicode字符后面,增加一个空格。这10个项目中的大部分项目都需要作如是处理,处理完毕之后,就可以运行了。

猜你喜欢

转载自blog.csdn.net/litterpotatoes/article/details/82955727
今日推荐