QGis2.14.4基于Win10+Qt4.8.6+VS2010环境的编译

做为关于QGis的第一篇博文,我仍是先简单介绍下QGis(固然,我默认你们至少应该知道GIS是什么),比较官方的描述我就直接摘取了wiki上的内容:php

QGIS(原称Quantum GIS)是一个自由软件的桌面GIS软件。它提供数据的显示、编辑和分析功能。html

听说在国外QGIs用得比较普遍,在国内的处境很惨,能够说不少从事地理信息工做的人只知道ArcGis而都不知道这个软件,这主要是与国情有关。python

因为QGis是开源软件,因此个人兴趣主要是在开发上面,目前国内这方面的资料很是少,等会我会给你们推荐一个对新手有很大帮助的博客,我也是从那里学习到QGis的入门知识。在文章最后我也会把整个编译过程当中对我有所帮助的博文地址放上,给你们作参照。app

通过断断续续一周的折腾终于将QGis编译好了,过程很曲折,编译完成后也颇有成就感。工具

其实整个编译过程不是很真复杂,由于有不少工具能够简化咱们的操做,可是对于以前没接触过的人来讲在编译过程当中会遇到不少问题,就算你一步一步照着网上的流程作,老是会在中途遇到别人没遇到的问题,开源软件的编译我以前就只编译过gdal,此次编译QGis真的很不容易,由于编译它会涉及大大小小的开源库几十个...想一想就....,因此我写这篇博文也不能说彻底照着作就能顺利编译,更多的是想将本身在这个过程当中遇到的问题与你们分析,对你们有一点点帮助。post

 

好,正式开始了。学习

(一)准备工做flex

先把须要的工具软件准备好,我整理了一下须要单独准备的只有6个:ui

 

一、VS2010,这个应该没什么说的;spa

二、Qt 4.8.6 x86,这个要说下,如今最新版是Qt5.7了,可是官方安装文档中仍是不建议使用Qt5,或者说对于这条官方一直未做修改,因此若是不清楚本身该使用Qt4仍是Qt5的就用Qt4吧,省得在开发过程当中出现一些莫名其妙的问题......

三、qgis-latest-ltr.tar.bz2,qgis的源码,我用的是目前的长期支持版本,就是2.14.4;

四、cmake 3.5.2 x86,我使用的这个版本比其余推荐的要新,反正在用的时候都正常;

五、osgeo4w,这是个好东西,qgis编译过程当中须要的开源库都是用这个下载的;

六、win_flex_bison,flex与bison如今都在同一个包里,因此只须要下载一个包就好了。

OK,要单独准备的东西已经好了,能够先不着急安装,咱们先把须要的开源库下载起,由于这个比较费时间。

 

(二)开源库下载

利用osgeo4w安装须要的开源库,选一步一步:

 

到这里就要开始准备下载了,我也按惯例把库先列一下,不过你们不用对着手动去找,有更好的办法:

  • expat
  • fcgi
  • gdal
  • grass
  • gsl-devel
  • iconv
  • pyqt4
  • qt4-devel
  • qwt5-devel-qt4
  • sip
  • spatialite
  • libspatialindex-devel
  • python-qscintilla

 

咱们既然都是编译的新版本,确定也要用新办法,直接在osgeo4w中搜索qgis,在Libs中选择下图中的两项,前面对应有版本号,Keep是因为我已经安装过了,没安装过是Skip,而后在对应的Bin项选择就好了:

 

而后点下一步,会看到程序将全部须要依赖的开源库都列出来了(因为我已经安装过了,就没截图了),因为下载速度比较慢,在下载的时候还会出现个别下载失败的,不过没关系,个别失败的咱们后面在配置cmake的时候再来补,在等待的时候咱们继续前面还没作完的工做。

 

(三)软件安装及环境配置

下面的安装程序除了VS外,其余的尽可能不要放在有中文与有空格的路径下。

软件安装的过程都差很少,没什么特别的地方就不一一说了,环境配置有2个办法,一是每安装完一个程序就对应将环境配置好,另外一种办法就是用批处理文件,在后面会附上。

关于环境配置其实我还有个疑问,我理解的是将全部环节配置好后,在配置CMAKE的时候,文件夹路径基本上就都能对应上了,可是实际操做中仍是要本身动手一个个的设置,不知道是否是我还漏了什么环节,可是我仍是建议你们将环境变量都设置好。

一、安装VS2010;

二、安装Qt,核实环境变量是否配置好(我忘了安装完后会不会自动添加环境变量),没有的话加个就好了:

 

三、安装cmake,路径最好不要有空格,我用的这个不用安装,解压就好了;

四、安装win_flex_bison,路径最好不要有空格,装完后应该是这样

 

五、将qgis-latest-ltr.tar.bz2解压,并新建一个build文件夹,用来存放编译文件,dev如今请忽略:

 

六、最后等OSGeo4W都下载完成后,就开始配置环境变量了,本身建立一个*.bat文件,将下面的内容复制进去:

@echo off
set VS10COMNTOOLS = C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86

set INCLUDE=%INCLUDE%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include
set LIB=%LIB%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib

set OSGEO4W_ROOT=C:\OSGeo4W
call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
path %PATH%; C:\cmake-3.5.2-win32-x86\bin; C:\win_flex_bison

@set GRASS_PREFIX=c:/OSGeo4W/apps/grass/grass-6.4.4
@set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\include
@set LIB=%LIB%;%OSGEO4W_ROOT%\lib;%OSGEO4W_ROOT%\lib

@cmd

其中第二、3行内容就是你VS2010对应的路径,第五、6也一样对应你电脑上的路径,注意v7.0A这个地方要一致,第8行就是你的OSGeo4W路径,第10行对应你的CMAKE与win_flex_bison的路径,后面3行都大同小异,保存好后就直接运行,若是有提示找不到路径的,就是上面某行没设置好。如今回想起来我设置完在配置时没识别到,可能和系统权限有关,当时虽然没提示错误,可是我也没有核实环境变量 - -!!

 

(四)导出VS工程

终于把准备工做都作完了,开始进军CMAKE了,我以前编译遇到的问题大部分都在这里,首先运行程序,并设置源路径与编译后路径:

 

而后点Configure,选择VS2010:

 

点击Finish后,会弹出一个错误,这个是正常的,咱们仔细看下面的信息,注意这个“flex not found”,咱们前面已经安装好了,只是没找到而已:

 

因此咱们只要将flex程序对应的路径填进去就行了,咱们继续点Configure,出现的状况和刚才同样,会提示没找到bison,填进去:

 

继续Configure,根据错误提示与标红的地方,咱们须要配置GEOS与PROJ的路径,注意GEOS库的路径

 

继续Configure,设置GDAL:

 

继续Configure,此次出来的就比较多了,不过咱们对照标红的地方一个一个的配置,顺便说下,在对着下图若是有找不到的,就从新运行OSGeo4W程序,单独搜索出来下载:

 

继续Configure,有细心的观众发如今下面信息中会发现如下的错误,这些其实不用管,我以前被误导了,觉得哪里配置不成功。。。。

 

接着上面继续,此次有3个表红的项,可是咱们看下面的提示“Could not find QCA”,因此只须要配置第一个就好了:

 

继续Configure,又出现了一些问题,是时候要修改WITH内容了:

 

向下拉,找到WITH

 

继续Configure,离成功还差一步了,此次出现了一个SETUPAPI_LIBRARY错误:

 

SETUPAPI_LIBRARY错误的解决办法以下,点击Add Entry,而后配置内容:

 

如今Configure后,就显示成功了,到这配置就完成了,若是你们在配置过程当中遇到的问题与我不一致,不要着急,注意下面的错误提示,它提示哪一个没找到你就对应去配置,若是出现上面没提到的库,通常与WITH中的配置有关,能够多尝试几回:

 

在Generate以前,还须要改个东西,涉及到咱们最后一步提取开发包的路径,默认路径是在C:\Program Files (x86)中,建议修改到其余路径下,因为我用的Win10,在这个路径下须要权限,我以前提取开发包一直失败就是这个缘由:

 

如今点Generate,咱们下一个编译须要的工程文件就所有生成成功了。

 

所须要的工程文件:

 

(五)编译工程

在VS中加载qgis2.14.4.sln工程,加载完成后共有192个:

 

首先将编译模式改成RelWithDebInfo,而后在qgis工程上点右键,设置为启动项:

 

开始编译,中途正常:

注意:你们在第一次编译的时候可能会报错,若是错误是在编译qgis_core工程的qgsunittypes.cpp出现常量中有换行符语法错误

 

你们定位过去会看到是由于下面下面两个符号(分秒)形成的,目前我本身的解决办法就是在符号两边各加一个空格就能经过编译:

 

编译完成后在,生成的程序在 build\output\bin\RelWithDebInfo 下,一个基础的qgis程序就编译完成了:

 

接下来咱们从新将ALL_BUILD设置为启动项,将整个工程都编译,编译完后会出现3个错误:

咱们如今什么都不动,而后再编译下,由于以前已经编译过,因此会很快,完成后就只剩1个错误,这时候编译就完成了。

 

咱们如今将C:\OSGeo4W\bin目录下全部的dll都拷贝到qgis.exe所在的目录,就能够正常运行了,你们会发现里面图标显示不全,解决办法是将C:\Qt\4.8.6\plugins\imageformats整个文件夹拷到qgis.exe所在的目录就行了。

关于图标问题的详细信息能够参照:http://blog.csdn.net/deirjie/article/details/50446033

 

(六)提取开发包

整个工程编译完了,对于咱们开发使用还有一个步骤,就是提取开发包,将INSTALL设置为启动项,而后编译,就会成功在咱们指定的路径下生成文件夹,若是这步失败可能就是我上面提到的路径问题:

 

整个编译过程已经完成了,最后来看下:

qgis-2.14.4:是咱们解压出来的源代码

build:编译的工程文件

dev:提取出来的开发包(上一步提取的,改了下文件夹名字)

 

 

编译完成只是迈出了第一步,对我来讲只是个开始,后续我也会继续将我本身在qgis上学习的一些心得陆续放上。

最后我附上几个在编译中对我帮助很大的地址,你们在遇到问题时能够多参照(其中第一个连接里还有不少入门教程):

http://blog.csdn.net/deirjie/article/details/48216773

http://blog.csdn.net/liminlu0314/article/details/17400075

http://bbs.qter.org/forum.php?mod=viewthread&tid=3802

http://www.osgeo.cn/post/3805.html

 

最后我把上面用到的工具,及我最后提取出的开发包共享一个,你们须要的能够下载:

http://pan.baidu.com/s/1nvF8sfZ

相关文章
相关标签/搜索