前言

1、编译QGIS3.X版本的初衷:
(1)前期基于QT4.8.6和VS2010编译过QGIS 2.14.16,这次编译QGIS3.10.6带有“自虐”倾向,选择3.10.6也非偶然,是经历了QGIS3.4和QGIS3.6源码编译失败之痛后完成的,现在回想已知问题所在,后续再印证。
(2)QT4、VS2010、QGIS2.X现在已经非常成熟,但世间没有永恒不衰之物,这些工具完成了一场场华丽的演绎,终将慢慢退出历史舞台,就像恒星周期的主序星向红巨星的演变(虽然不会经历那么漫长的时间)。现在QT5、VS2015+、QGIS3.X已经非常流行,为研究这些工具的新特性,特此尝试。
(3)QGIS的编译对于初学者而言不可谓不痛苦,但世间之事,哪一件容易?编译过程包含多个步骤,可能包含多种第三方依赖库的编译,并且最重要的是不同软件和依赖库之间的版本匹配问题(vs2010还是vs2015还是vs2017?qt4还是qt5?qt4.?qt5.?第三方依赖包选择哪个版本?)。
2、编译环境&&软件版本:
(1)Windows 10 64位 家庭中文版
(2)Visual Studio 2015 Professional(专业版)
(3)Qt-5.11.2 32位
(4)CMake-3.14.5 32位
(5)Cygwin 32位
(6)OSGeo4W 32位
(7)QGIS-3.10.6 (待构建的源码)
3、本教程编译的是32位QGIS,后续加更64位编译

过程

1、软件准备:
(1)操作系统:Windows 10 64位 家庭中文版(32位也可,专业版、旗舰版也可)
(2)其他软件下载:

工具包 下载地址
QGIS 3.10.6 源码 https://github.com/qgis/QGIS/releases
Qt-5.11.2(32位) 通过官网,或通过OSGeo4W下载安装,官网:https://download.qt.io/new_archive/qt/,或https://download.qt.io/archive/qt/
CMake(32位) https://cmake.org/download/
Cygwin(32位) http://cygwin.com/setup-x86.exe
OSGeo4W (32位) http://cygwin.com/setup-x86.exe

2、开始编译:
(1)QGIS源码解压到非中文、无空格路径下;
(2)安装Cygwin的同时下载安装flex、bison,过程请参考笔者之前写的教程:
QGIS编译—QGIS2.14.16 + Qt4.8.6 + VS2010 —32位版本
(3)安装OSGeo4W 的同时下载安装:expat、fcgi、gdal、grass、gsl-devel、iconv、pyqt5 、qt5-devel、qwt、sip、spatialite、libspatialindex-devel、qscintilla、python、geos、proj、qca、qtkeychain、libzip,具体过程参考教程同上,但是要注意:如果某个包存在qt4和qt5两个版本,选择qt5的版本,以相区别;如果不想按上面一个一个查找,也可以在OSGeo4W中直接下载安装qgis-dev包
(4)配置环境变量:
将Cygwin和OSGeo4W及其下载的依赖库添加到系统的环境变量。假设都装在C盘,则在系统变量Path里添加: C:\cygwin\bin;C:\cygwin\lib;C:\OSGeo4W\bin;C:\OSGeo4W\include;C:\OSGeo4W\lib;
配置完成后,启动命令行,输入:echo %path% 回车即可使得配置的环境变量立即生效,而不用注销或重启。
(5)修改源码:
找到解压的QGIS源码文件夹,修改里面的三个位置:
1)源码的根路径下,打开“CMakeLists.txt”,找到所有的“CMAKE_CXX_FLAGS”,在后面添加“/MP /utf-8”,如下图所示,目的有二,一是加快编译速度,二是解决无法识别字符的问题;

2)源码的根路径下,找到“ms-windows\osgeo4w”,找到“msvc-env.bat”,右键“编辑”打开,修改里面的CMake\bin的路径,如下图所示:

如果你的OSGeo4W和Cygwin没有安装在C盘,那么里面的位置要更改为实际安装位置:

3)源码的根路径下,找到“src\providers\mdal”,打开“CMakeLists.txt”,找到第23行“FIND_PACKAGE(LibXml2)”,在下面添加一行“FIND_PACKAGE(Threads)”,如下图所示:

(6)创建批处理文件:
在任意位置,新建一个“start_compile.bat”,右键-编辑,里面内容如下:

@echo off
call D:\project\qgis3_compile\source\qgis_source_031006\ms-windows\osgeo4w\msvc-env.bat x86
@cmd

(7)CMake配置与构建:
1)将“cmake-gui.exe”所在路径添加到环境变量;
2)Windows开始菜单,找到“VS2015 x86本机工具命令提示符”,打开;

3)运行刚才创建的“start_compile.bat”,如下图所示:

4)输入“cmake-gui”,回车,弹出CMake的图形化界面;
5)“Where is the source code”一栏选择QGIS源码的文件夹,“Where to build the binaries”一栏选择生成vs工程的目标路径;
6)点击“configure”,在弹出对话框选择“Visual Studio 14 2015”,点击“finish”;
7)如果前面的配置没有问题,configure将顺利完成;
8)取消勾选“WITH_BINDINGS”,勾选WITH_CUSTOM_WIDGETS、WITH_QSPATIALITE;整个CMake的选项如图所示:

9)点击“generate”,如果前面的配置没有问题,generate将顺利完成;
10)点击“open project”,打开生成的vs工程,可以看到一共有340个工程,如下图所示:

11)编译配置选择“RelWithDebInfo”、“Win32”,如下图所示:

11)点击“生成-生成解决方案”,不出意外的话将顺利完成,如下图所示(笔者第一次编译成功后忘了截图,重新生成的话耗时较长,此处仅展示第二次点击“生成解决方案”的结果):

12)点击“开始调试(F5)”,QGIS正常启动,证明QGIS源码编译成功:

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本相关推荐

  1. QGIS编译---QGIS3.22.4 + Qt5.15.3 + VS2019 ---64位版本

    0 编译结果 先放上编译结果: 图1 QGIS3.22 启动界面 图2 QGIS3.22 操作界面 1 前言 因一些主观.客观原因,一年多没更新博客了,提笔继续. 这是笔者编译的第三个版本QGIS,本 ...

  2. QGIS编译---QGIS2.14.16 + Qt4.8.6 + VS2010 ---32位版本

    编译前须知(有必要的几句啰嗦): 1.莫被这个教程的篇幅吓到,其实篇幅不大.就算大家觉得太啰嗦,请见谅,笔者写教程就是喜欢详细,喜欢面面俱到.再者,本教程是为了解答很多人编译QGIS遇到的头疼问题,虽 ...

  3. 谷歌浏览器32位版本安装包_Windows 10 OEM渠道告别32位版本 这意味着什么?

    本周,微软宣布,自2020年5月更新开始,Windows 10 OEM 渠道将彻底告别32位版本.在这之后,软件巨头将不再向原始设备制造商提供非64位版本的系统.对于当前仍在使用早期32-bti系统的 ...

  4. 编译并使用boost库(win7+boost1.63+vs2015+32位or 64位)

    博客 学院 下载 GitChat 论坛 问答 商城 VIP 活动 招聘 ITeye 码云 CSTO 写博客 发Chat 编译并使用boost库(win7+boost1.63+vs2015+32位or ...

  5. 关于 百度飞浆paddleOCR编译32位版本 的解决方案

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/113890812 长期持续带来更多项目与技术分 ...

  6. Qt5串口多功能助手32位版本相关程序含源码

    开发平台:Qt 5.9 编译环境:MinGW 5.3  32bit Qt6.3-64位版本文章链接:(102条消息) Qt6串口多功能助手64位版本上位机源码_阿衰0110的博客-CSDN博客 免费安 ...

  7. 太阳神三国杀学习第一步--编译并运行(qt5.7.0+vs2015)

    起因:     很早就想寻找一个开源的c++项目进行学习,也在很早就发现了太阳神三国杀这个项目,但是之前在github中下载后总是草草编译一直没有编译成功过,最近又重燃斗志决定深入研究一下. 分析应该 ...

  8. mysql8.0.13 32位下载_MySQL8.0下载-MySQL数据库8.0下载 v8.0.11官方版(32位/64位)--pc6下载站...

    mysql是一款数据库管理系统,mysql一般网站开发者或者数据库开发者会用到,mysql拥有体积小巧.读取和存储速度快的特点,新版本完全脱了MylSAM存储引擎,改善了扫描性能,同时还重构了sql分 ...

  9. 编译QT 5.9.7 msvcr2013 x86 32位版本

    因为项目需要,用到了qt msvcr2013 x86 版本 ,但是官方下载的qt安装包里面只有x64的,因此决定自己编译x86的版本. 编译所需要的工具: qt源码包 ,python ,vs2013 ...

  10. 小米6 MIUI 10 9.4.11 EDXPOSED

    众所周知,大神ravo89从 android 7以后就没在更新xposed了,导致android 8以后就没有使用xposed了.只好另辟蹊径,网上到处寻找如何愉快的抢个红包. 经过多次尝试,经历多次 ...

最新文章

  1. https ddos攻击——由于有了认证和加解密 后果更严重 看绿盟的产品目前对于https的ddos cc攻击需要基于内容做检测...
  2. 六十一、Vue中父子组件传值和组件参数校验
  3. 在哪开启oracle服务器,开启企业殿堂的钥匙 Oracle服务器的安装
  4. php 404重定向,如何使用PHP实现在WordPress中将404错误页面重定向到主页
  5. iSCSI远程块存储配置实验
  6. mysql error 1017_[转载]解决 mysql ERROR 1017:Can t find file解决错误
  7. vc red.msi matlab,vc red.msi x64+x32位版下载
  8. 深港澳金融科技师(SHMFTTP)一级考试
  9. 【python】爬取植物数据库
  10. 总结SSL/TLS协议运行机制
  11. [c++]c++程序设计-Y.Daniel.Liang 笔记
  12. 使用wireshark解密PC浏览器的HTTPS流量
  13. 研发管理01:项目管理(PM) 与 Scrum Master (SM)
  14. Js 获取日期加(减)一天并规范日期格式
  15. 2023年计算机毕设选题推荐
  16. java基础做简单的医院管理系统,附带课程设计说明书
  17. 基于sdm660 androidO----MTP driver 分析
  18. 虚拟化平台安装并升级显卡驱动
  19. 英语-TOEFL和GRE复习计划与资料
  20. 实用Android 屏幕适配方案分享

热门文章

  1. gwt - inherit module问题
  2. gitlab CI/CD 持续集成 部署 一文到底
  3. Java基础之序列化
  4. 冬瓜哥直播:小白一小时掌握机器学习底层原理
  5. 脑机接口的技术与应用
  6. python 暑期培训
  7. oracle导入excel乱码,Oracle导出的文件为什么用Excel打开是乱码?
  8. python下载谷歌地图瓦片_Python地图可视化之Folium更换地图瓦片(Map Tiles)
  9. 如何用公式编辑器打半中括号?
  10. oracle expdp parallel,关于EXPDP中的PARALLEL参数