QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

前言

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:cygwinbin;C:cygwinlib;C:OSGeo4Wbin;C:OSGeo4Winclude;C:OSGeo4Wlib;
配置完成后,启动命令行,输入:echo %path% 回车即可使得配置的环境变量立即生效,而不用注销或重启。
(5)修改源码:
找到解压的QGIS源码文件夹,修改里面的三个位置:
1)源码的根路径下,打开“CMakeLists.txt”,找到所有的“CMAKE_CXX_FLAGS”,在后面添加“/MP /utf-8”,如下图所示,目的有二,一是加快编译速度,二是解决无法识别字符的问题;

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

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

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

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

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

3)源码的根路径下,找到“srcprovidersmdal”,打开“CMakeLists.txt”,找到第23行“FIND_P QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

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

@echo off call D:projectqgis3_compilesourceqgis_source_031006ms-windowsosgeo4wmsvc-env.bat x86 @cmd 

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

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

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

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

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的选项如图所示:

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

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

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

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

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

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

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

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

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本

版权声明:玥玥 发表于 2021-05-09 0:36:30。
转载请注明:QGIS编译---QGIS3.10.6 + Qt5.11.2 + VS2015 ---32位版本 | 女黑客导航