编译运行整个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、后续问题

启动完成后,后续就是中文汉化和界面图标没显示的问题,需要再进一步处理。

记录编译QGIS(3.4+Qt5.11+VS2015)的整个过程的更多相关文章

  1. Windows下PythonQt编译(vs2015+Qt5.11.2+PythonQt 3.2)

    后记: 由于自己low,没有下载罪行的python3.2导致编译上遇到种种问题,后文可以参考,建议看: <Windows7 VS2015 下编译 PythonQt3.2> https:// ...

  2. Windows下PythonQt编译(vs2015+Qt5.11.2+PythonQt 3.2)探索

    时间:2018年10月20日 笔者最近在做Qt方面的开发工作,需用到脚本程序对程序内部进行扩展,就很自然的想到了PythonQt,下面介绍PythonQt在Windows下的的安装编译心得,水平有限, ...

  3. Qt5.11.2 VS2015编译activemq发送程序 _ITERATOR_DEBUG_LEVEL错误和崩溃解决

    1.问题描述: 运行环境是 win10 64位系统,开发环境是VS2015 ,Qt 5.11.2.开发activemq发送程序,遇到问题 (1)Qt5AxContainer.lib error LNK ...

  4. QT学习笔记1:VS2015配置QT5.11

    由于工作关系,我又接触到了QT,在之前写过一篇博客是 在vs2017下配置openCV,当时用的是2015做的示范,现在就继续记录一下在VS2015下配置QT吧(VS2017配置是一样的) 第一部分: ...

  5. WIN10+QT5.9+VS2015编译RedisDesktopManager

    原文:WIN10+QT5.9+VS2015编译RedisDesktopManager 官方源码编译安装说明地址:http://docs.redisdesktop.com/en/latest/insta ...

  6. qt5.11.2+vs2017环境下配置pcl1.8.1以及第三方依赖库vtk的编译

    1.准备工作 我所用的开发环境是win10下的qt5.11.2配置了vs2017的编译器,根据自己所用的VS的版本去官网下载对应版本的pcl库,如下 PCL-1.8.1-AllInOne-msvc20 ...

  7. qt5.11.2+vs2017环境下opencv3.4.1编译配置

    OpenCV是一个开源的计算机库,它可以帮助视觉工作者做很多富有创造性的工作,在图像处理领域扮演着重要的角色.由于opencv3.x的存在,不管你是学生还是研究人员,是专家还是初学者,都可以快速的建立 ...

  8. Qt5.11.1安装与VS2017配置

    Qt5.11.1安装与VS2017配置 转 https://blog.csdn.net/gaojixu/article/details/82185694 文章目录 Qt5.11.1安装与VS2017配 ...

  9. Ubuntu18.04中配置QT5.11开发环境

    准备工作 参考 https://wiki.qt.io/Install_Qt_5_on_Ubuntu . # 安装g++ sudo apt install build-essential # sudo ...

随机推荐

  1. djang2.1教育平台02

    在次申明,之所以重做这个资料是因为原幕课教程漏洞太多,新手根本没有办法正常照些学习,我凭着老男孩python 课程基础,重做这个教程 ,更改版本为当前最新版本,为了方法以后的人学习,并不是照着原文照  ...

  2. POJ1426——Find The Multiple (简单搜索+取余)

    题意: 给一个数n,让你找出一个只有1,0,组成的十进制数,要求是找到的数可以被n整除. 用DFS是搜索 当前位数字 (除最高位固定为1),因为每一位都只有0或1两种选择,换而言之是一个双入口BFS. ...

  3. error: subscripted value is neither array nor pointer问题解决

    在运行程序的时候报错:error: subscripted value is neither array nor pointer 原因分析:下标值不符合数组或指针要求,即操作的对象不允许有下标值. 出 ...

  4. Writing in the Science 01

    INTRODUCTION What makes good writing? Good writing communicates an idea clearly and effectively. Goo ...

  5. 如何在Ubuntu 18.04安装Git

    在Ubuntu 18.04安装Git 更新apt包列表 apt-get update -y apt-get upgrade -y 安装Git: apt install git 检查Git版本 git ...

  6. requests接口自动化-数据库参数化

    数据库参数化的场景 部分接口,参数其他方式获取不到,可以去数据库去获取,如手机验证码 安装pymysql 配置文件 def sql_conf(): # 定义数据库的配置 host='127.0.0.1 ...

  7. 深入剖析 Laravel 服务容器

    https://cloud.tencent.com/developer/article/1340400

  8. django中admin一些方法

    1.概述:内容发布,负责添加,修改,删除内容及公告访问2.配置admin应用在settings文件中INSTALLED_APPS添加:'django.contrib.admin', 默认是已经添加好的 ...

  9. 鸿蒙内核源码分析(文件概念篇) | 为什么说一切皆是文件 | 百篇博客分析OpenHarmony源码 | v62.01

    百篇博客系列篇.本篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一切皆是文件 | 51.c.h.o 本篇开始说文件系统,它是内核五大模块之一,甚至有Linux的设计哲学是" ...

  10. 鸿蒙内核源码分析(汇编基础篇) | CPU在哪里打卡上班? | 百篇博客分析OpenHarmony源码 | v22.01

    百篇博客系列篇.本篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CPU在哪里打卡上班 | 51.c.h .o 硬件架构相关篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CPU在 ...