QGIS编译
一、准备工作
1、下载QGIS源码
最新版本的QGIS源码需要从git上下载。最新的发布版是2.0,下载地址见下。https://github.com/qgis/QGIS/tree/release-2_0。打开网页,在右侧有个Download ZIP即可下载2.0的源码zip包,选择一个地方保存即可,如下图。
2、下载、安装和编译QGIS的依赖库
这里只说明安装QGIS必须的依赖库,其他的可选的这里都不说明。首先是编译所需的工具:
CMake >= 2.8.0
Flex
Bison >= 2.4
上面三个工具安装的时候务必安装在没有空格,没有中文的路径里面,然后将安装之后的bin目录添加到环境变量里面,要不然,后面有你受的。不过也没关系,后面有解决方案。接下来是必须要的第三方库:
Qt >= 4.5.0
Proj >= 4.4.x
GEOS >= 3.0
Sqlite3 >= 3.0.0
GDAL/OGR >= 1.4.x
Qwt >= 5.0 & (< 6.1 with internalQwtPolar)
expat >= 1.95
下载地址就不列了,Google搜索,基本上第一个进去就是官网,然后点击下载就可以了。
二、CMAKE配置
下载后解压QGIS-final-2_0_1的压缩包,然后在同级目录新建一个Build目录,用于保存CMake生成的工程文件和编译后的可执行文件。如下图所示。
接下来打开CMake的GUI程序来配置QGIS的工程文件。先将QGIS的源码目录和上面创建的Build目录选进去,如下图所示。
接下来点击Configure按钮,弹出要生成的工程文件类型,我的电脑安装的是VS2008,所以选择Visual Studio 9 2008,如果是其他的,选择对应的即可,如下图。
点击Finish即可开始配置,接下来就会弹出一些错误信息,来告诉你需要设置QGIS所依赖的第三方库的路径等等。如下图:
点击确定之后,发现有很多底色是红色的配置项,这些就是我们需要修改的。
由于这里只编译最基础的QGIS可执行程序,所以其他的插件全部不进行编译,所以我们将分组中的WITH修改为如下图所示。如果你需要编译插件的话,就勾上,同时后面需要设置插件所依赖的第三方库。
接下来,点击Configure按钮,会在最下面的窗口中以红色的字体提示需要设置那些库,比如首先就会提示要设置Flex库的路径。
设置完Flex的路径之后点击Configure,又会提示Bison没有找到,依次设置完,按照这个步骤设置完所有需要设置的第三方库。
接下来提示设置PROJ和GEOS库
接下来是GDAL
点击完Configure之后会出现一大片的红色,如下图所示。不要恐惧,其实里面大多数都是可以不用设置的。
设置SQLite3和spatialindex库的路径
点击Configure后设置Expat的库
点击Configure后设置QWT的库
接下来点击Configure后提示要设置SetupAPI库的路径,这个库在程序安装目录的Windows SDKs目录里面,如我本机的为“C:/ProgramFiles/Microsoft SDKs/Windows/v6.0A/Lib/SetupAPI.Lib”。
接下来点击Configure会提示SPATIALITE错误,如果你有这个库的话,将路径填进去,如果没有,直接将后面的值删除,留空即可(留空的话后面需要修改一部分源代码)。
接下来再点击Configure按钮,如果正常的话,应该就没有错误提示了,输出窗口会输出如下图所示的信息。
然后接下来点击Generate按钮,生成工程文件。这时在输出窗口会输出信息,如果输出信息里面没有错误就说明没问题,警告信息不属于错误信息,最后出现Generate done的字样就说明生成成功。
然后打开Build目录,你会看到生成的sln文件以及其他的工程文件,至此,QGIS编译之前的配置就到此结束。如下图所示。
三、编译
双击Build目录下的qgis2.0.1.sln或者用VS打开该sln文件,等待VS将整个解决方案加载进来。如下图所示。一共由139个项目组成。
接下来就是编译了,整个编译的过程肯定非常的漫长(我没试过)。首先在qgis的工程右键,打开项目依赖项,如下图所示,将与前面打勾的项目流下来,其他的全部卸载掉。
有个快速的方法就是,首先把所有的工程都先卸载掉,然后加载QGIS依赖的几个就可以了,这样编译起来时间比较少,如果你时间比较多就全部编译吧。
我大概筛选了下,qgis依赖的几个工程如下:
名称 |
说明 |
|
qgis |
QGIS可执行程序 |
|
qgis_analysis |
依赖项 |
|
qgis_core |
依赖项,QGIS核心库 |
|
qgis_gui |
依赖项,QGIS界面库 |
|
ui |
QGIS所有的界面 |
|
gdalprovider |
读取栅格数据驱动 |
|
ogrprovider |
读取矢量数据驱动 |
接下来直接在QGIS工程右键编译即可。正常情况下VS会自动先编译QGIS依赖的几个工程,最后编译QGIS。由于两个provider工程,QGIS是通过插件的形式加载的,不会直接依赖,所以需要最后手动编译。
注意:在编译的时候如果没有将GNU的几个软件安装到没有空格的路径中,或者没有加入环境变量path中,很有可能编译出错,错误信息一般如下:
下面我们就通过手动的方式来解决这个问题,首先在工程中找到编译出错的文件。首先来看qgis_core的错误,
1>Generating qgsexpressionparser.cpp
1>E:\QGIS\GnuWin32\bin\bison.exe: m4: No such fileor directory
1>Project : error PRJ0019: 某个工具从以下位置返回了错误代码:"Generating qgsexpressionparser.cpp"
1>生成日志保存在file://e:\QGIS2\Build\src\core\qgis_core.dir\Debug\BuildLog.htm
我们打开上面的BuildLog.htm,会发现下面的文字:
出错的就是上面选中的那句执行的时候出错了,由于bison所在的目录没有安装到环境变量path里面导致的,我们将上面的这句话复制下,然后打开一个cmd命令行窗口,cd到bison的目录,如下图:
然后在窗口中执行上面的那句话,如果没有输出任何信息就说明OK了,然后回到VS中,继续点击生成即可,其他的flex错误类似这样解决即可。
然后由于之前没有配置SPATIALITE,所以我们需要修改源代码,编译的时候提示spatialite.h文件找不到的,将include“spatialite.h”注释掉,然后再次编译会提示有函数spatialite_init、spatialite_version、spatial_ref_sys_init找不到的,将该行注释掉,然后编译即可。
所有的工程编译完之后,会在Build目录下面的output\bin\debug\目录生成dll和exe,然后只需要将QGIS所有依赖的dll拷贝过来就可以双击qgis.exe运行了。依赖的dll主要有gdal、geos、proj、qt、qwt等。需要注意的是,要把gdalprovider.dll和ogrprovider.dll放到exe目录的plugins目录,否则不能打开数据。目录结构如下图。
下面是编译完启动的界面。如果想要界面汉化的话,使用QT提供的Linguist(语言家)工具,打开QGIS源码目录下的i18n目录下面的qgis_zh_CN.ts,然后点击文件菜单下面的发布为,将存储为一个qgis_zh_CN.qm的文件,最后将这个qm文件放到qgis.exe所在目录中新建一个i18n的目录,放到里面重新启动qgis就可以看到界面汉化了。
李民录2013-12-18
QGIS编译的更多相关文章
- QGIS编译教程
注意更新时间:Thursday November 02, 2017 1. Introduction 简介 This document is the original installation guid ...
- QGIS 编译
QGIS 编译 在编译的过程中花费了很长时间,特别是编译Debug版本.release版本的编译可以从晚上找到很多的资料,但是Debug的编译相对较少.在Debug编译的过程中,需要单独build工程 ...
- 记录编译QGIS(3.4+Qt5.11+VS2015)的整个过程
编译运行整个QGIS耗时耗力,由于本人比较愚钝,来来回回花了大概两个星期最终编译成功,记录一下整个过程,一方面备忘,另一方面可能也给别人一点借鉴. 1.准备工作 参考了许多网上的教程,李民录大神的&l ...
- QGis、Qt对话框上的OK、Open、Cancel、Help等英文翻译
成功编译qgis,启动程序发现对话框上的OK.Open.Cancel.Help等依然是英文字段,然后查找源码看这些字段是否都添加到了语言翻译包中: 最后发现这些按钮都是qt的QTGui4库中的QDia ...
- 研究QGIS二次开发笔记(一)
为了在QT程序中嵌入一个地图,最终选择了QGIS来干这件事.选型阶段真是呵呵.我折腾的是QGIS2.4.0. 首先,到官方网站下载安装QGIS.如果你跟我一样懒的话,可能希望下载一个已经编译好的win ...
- 【全网首发】使用vs2017+qt5.12.4编译64位debug和release的qgis3.4.9
一.摘要: 搜索网络没有发现一篇文章完整的介绍如何编译qgis3.4.x的debug版本,官方的指导也长时间不再更新. 所以前前后后花了4天搞定qgis的debug编译,并成功运行,废话不多说,直接上 ...
- VS2017+QT5.12.10+QGIS3.16环境搭建及开发全流程
题记:大力发展生产力,助力高效采集.(转载请注明出处https://www.cnblogs.com/1024bytes/p/15477374.html) 本篇随笔分为五个部分: 一.获取QGIS3.1 ...
- QGis+QT5.9+VS2017源码编译
1.需要软件 VS2017 QT5.9.2 CMake 3.10.2 Cygwin osgeo4w QGIS源码 2.安装VS2017 过程省略 是由于机器上已经安装了VS2017 3.安装QT5. ...
- QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译
由于工作要求,今年需要基于Qt搞跨平台的GIS.前期未曾接触过Qt,最近也简单学习了下,开源的QGIS是非常不错的学习资源,下了最新版的QGIS源码,不过在VS2015下却没法直接打开.网上查了很多资 ...
随机推荐
- Spring + Mybatis 集成原理分析
由于我之前是写在wizNote上的,迁移过来比较浪费时间,所以,这里我直接贴个图片,PDF文件我上传到百度云盘了,需要的可直接下载. 地址:https://pan.baidu.com/s/12ZJmw ...
- OC基础之可循环滚动并突出中间图片,并且可点击
前两天一哥们儿让我帮他写一下:可循环滚动并突出中间图片,并且可点击的一种滑动视图的效果,今天放在这里给大家展示一下,具体文字代码中都有注解,代码还有待完善,不喜勿喷,转载请注明,下载请点星,谢谢~ - ...
- blog写作心得体会
虽然写blog也挺久了,写出来的东西自己回顾的时候也会怀疑读者是否能看的明白,还是有种流水账的感觉,以后希望多从读者的角度出发.下面记录一些以后写博客的注意点. 具体关于某种技术点的小知识还有碰到的各 ...
- Ubuntu安装telent服务器时出现:apt-get:Package has no installation
当我在终端敲下这条命令的时候,系统就提示telnetd:apt-get:Package has no installation sudo apt-get install xinetd telnetd ...
- 在电脑上安装Linux操作系统
1硬件需求 A 一台电脑 B 一个优盘 2软件需求 A制作优盘启动盘的软件PowerISO BLinux操作系统的镜像文件 3安装PowerISO,并使用PowerISO A安装PowerISO B插 ...
- Apache Beam—透视Google统一流式计算的野心
Google是最早实践大数据的公司,目前大数据繁荣的生态很大一部分都要归功于Google最早的几篇论文,这几篇论文早就了以Hadoop为开端的整个开源大数据生态,但是很可惜的是Google内部的这些系 ...
- 【DevOps敏捷开发动手实验】开源文档 v2015.2 stable 版发布
Team Foundation Server 2015 Update 2版本终于在2周前的//Build 2016大会上正式发布了,借这个东风,小编也完成了[DevOps敏捷开发动手实验]开源文档的第 ...
- 1.关于QT中json数据处理和密码md5加密
新建一个Qt空项目 17Json.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += widgets gui MyWidget ...
- android自定义view实现progressbar的效果
一键清理是很多Launcher都会带有的功能,其效果也比较美观.实现方式也许有很多中,其中常见的是使用图片drawable来完成的,具体可以参考这篇文章:模仿实现360桌面水晶球式的一键清理特效.本文 ...
- 5. React 组件的协同使用 组件嵌套和Mixin
组件是React的核心,构建大型项目时多个组件之间需要进行协同使用.可以从横向和纵向两个角度来实现组件的协同使用,纵向的协同使用就是组件嵌套,横向的协同使用就是Mixin(抽取公共方法 ...