QGIS2.18+Qt5.9+VS2015编译
下图是编译结果用到的库版本图:
对于刚开始编译这玩意的人来说,一个字:难;两个字:真难;三个字:变态难。刚开始我也是这样,整了好长时间。掌握方法,知道怎么解决错误,其实也没有多难,相信自己。
也要谢谢这两位博主:
https://www.cnblogs.com/xiaojian1987/p/8342104.html
https://blog.****.net/u012016149/article/details/51813403
下面从这几个方面介绍:
- 下载相关库
- Cmake生成VS工程文件
- 编译工程文件及问题解决
1.下载相关库
这个没有什么可以讲的,其他博主也都列出来了,这个其实不用自己一个个下载编译,通过osgeo4w工具,下载qgis就可以把大部分的依赖库都下载下来,如果缺少哪个库,再单个下载就行了。
2.Cmake生成VS工程文件
(1)配置环境变量配置环境变量可以参考别的博主,其中要说一点GRASS_PREFIX环境变量,该环境变量中路径中分隔符应为“/”不能为“\”。
(2)库的配置
这个根据提示要求选择相应的库即可,下面是我的库配置截图:
(3)生产VS工程文件
当所有的库都配置好,Configure完成之后,点击Generate按钮生成VS工程文件。
3.编译
打开vs工程文件进行编译,我的工程个数有216个,比较多。先编译qgis_core工程,因为别的工程会依赖qgis_core库。
下面列举一下我在编译过程中遇到的问题:
(1)error C2001: 常量中有换行符:
解决方法:文件–>高级保存选项:选择unicode(utf-8带签名)
(2)C2371“int8_t”: 重定义;不同的基类型
解决方法://typedef __int8 int8_t; 改为 typedef signed __int8 int8_t;(添加个signed)
(3)编译qgis_core工程时:出现qgisgeometry.cpp的#include <netinet/in.h>找不到。
(3)编译qgis_app时,出现:无法打开“unistd.h”文件
解决方法:由于是在win系统下编译,出现这种问题很正常。把unistd.h复制到osg4w的include目录下,问题解决。
解决方法:将OSGeo4W64\apps\Qt5\plugins文件下的platforms文件夹拷贝到刚才的目录即可。
(8)编译成功后启动程序会发现,功能按钮没有图标,如下图:
解决方法:运行的时候程序找不到正确支持图标格式(svg)的库文件。这里需要把相应的库文件拷到主程序文件夹中,C:\Qt\Qt5.9.0\5.9\msvc2015_64\plugins\imageformats的imageformats文件夹拷到qgis.exe目录下。
结果如下图: