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

转载于:https://www.cnblogs.com/xiaowangba/p/6313931.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值