记录编译QGIS(3.4+Qt5.11+VS2015)的整个过程
https://www.cnblogs.com/m-zhang-yang/archive/2004/01/13/10333236.html
编译运行整个QGIS耗时耗力,由于本人比较愚钝,来来回回花了大概两个星期最终编译成功,记录一下整个过程,一方面备忘,另一方面可能也给别人一点借鉴。
1、准备工作
参考了许多网上的教程,李民录大神的《QGIS编译》
https://blog.csdn.net/liminlu0314/article/details/17400075;
《QGIS编译--QGIS3.03+VS2017(64)+QT5.92源码编译过程及二次开发准备经验》 https://www.e-learn.cn/content/qita/1241748;
等等好多教程。
需要安装的软件有
1)cmake
链接地址:https://cmake.org/download/,下载一个cmake的软件,本项目使用cmake进行构建的。
2)vs2015
在VS官网下载vs2015的社区版
3)GNU flex, GNU bison
这两个库使用cygwin(链接地址http://cygwin.com/setup-x86_64.exe )下载安装。
4)OSGeo4W
地址:http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86_64.exe
可以从这个软件上下载qgis安装需要的第三方库,主要有下面这些库
Gdal,Geos,Proj4,Sqlite3,Spatiallite,spatialliteindex,expat,qca,qwt,Qwtpolar,Qscintill,注意在安装的时候要选择Advanced Install的模式
5)Qt
Qt的库既可以是从OSGeo4W上直接下载,也可以在qt官网上安装,在配置的时候把路径写正确就可以了,我使用的是从OSGeo4W上下载了qt5.11.2的版本。
2、构建QGIS程序
可以使用git下载,也可以直接在github上下载qgis的源码,我选择的是qgis3.4的分之,直接编译maste编译的时候出了点问题,就是用了该版本编译。
下面就是使用cmake构建qgis了,
1) 打开cmake-gui界面
选好源码路径和构建路径,点击configure选择VS2015 64位进行配置,会出现一系列的库路径需要配置,基本都是在OSGeo4W中已经下载的库,如果没有下载,搜索后下载即可我最后配置成功的库目录如下,其中还需要配置的就是SETUP_LIBRARY路径:
C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A/Lib/x64/SetupAPI.Lib
有的版本总是提示spatiallite的版本过低,可以跳过改库的配置,在编译的时候加上即可。
所有的配置完成不再提示错误后,点generate生成vs2015的项目,构建完成。
3、编译QGIS项目
VS2015打开QGIS 项目后有三百多个工程,先编译基本的项目,根据其它的教程提示,先编译的库有
qgis_core,qgis_gui,qgis_app,qgis_native,qgis_analysis,ui,qgis七个基础项目再加上,libsxfrw,gdalprovider,ogrprovider插件项目一共十个。
首先编译qgis_core项目,该项目编译成功后面的项目就相对比较简单了。
出现的问题:
1)编译过程中总是提示:error C2001:常量中有换行符,在网上搜了一些答案,总结原因应该是VS的IDE对无BOM头的utf-8编码格式支持不完善造成的问题,解决方式有两种:可以将有中文字符的文件转换为带BOM头的utf-8格式的文件,或者是按照网上别人说的在””包括的中文字符后面加空格可以解决该问题。
2)另外一下显示无法找到某个头文件或者链接时候缺少某个库直接在增加include目录或者是库文件就行了,如我在编译的时候遇到一个头文件找不到的现象,发现该头文件在C:\OSGeo4W64\include\spatialindex目录下,直接包含该目录即可
之前的spatiallite没有配置成功的可以在此处配置上。
4、运行qgis项目
编译完成后,将qgis设为启动项目,直接运行,发现出现了一个问题无法加载qgis_app.dll库,这个地方搞了好久都不知道原因,查看了很多网上的教程才发现需要因为qgis_app.dll需要的很多动态库运行时找不到,所以无法加载成功需要把C:\OSGeo4W64\bin以及C:\OSGeo4W64\apps\Qt5\bin下的动态库全部拷贝到exe目录之下才能启动。建议在运行之前通过depends软件检查一下qgis_app.dl是否缺少依赖再运行。
再次启动提示如下错误no Qt platform plugin could be initialized错误,需要将C:\OSGeo4W64\apps\Qt5\plugins下的platforms拷贝到exe目录之下.
至此,成功启动qgis。
5、后续问题
启动完成后,后续就是中文汉化和界面图标没显示的问题,需要再进一步处理。
每一个不曾起舞的日子,都是对生命的辜负。
But it is the same with man as with the tree. The more he seeks to rise into the height and light, the more vigorously do his roots struggle earthward, downward, into the dark, the deep - into evil.
其实人跟树是一样的,越是向往高处的阳光,它的根就越要伸向黑暗的地底。----尼采