win7编译QGIS2.4

最近项目要用到gis软件,选了开源软件gis,这个软件最大的不便就是没有提供开发包,还要自己编译,开始准备看有木有编译好的文件,发现这方面的资料不多,没办法,只有自己动手,丰衣足食了。下面开始编译的过程: 我的编译环境是win7+QGIS2.4+vs2010+qt4.8.5,官网上有一个编译教程,参看这里,下面我就说下我的编译过程:

1.下载所需软件

2.安装软件

_注意:所有的安装路径都尽量不要有空格和中文,不然后面会很麻烦。_

首先安装编译所需要的库,在安装OSGeo4w时,选择advanced install->install from Internet,其他默认,然后到了安装库文件的地方,选择搜索安装下面的这些库:

  • Proj >=4.4.x
  • GEOS >= 3.0
  • Sqlite3 >=3.0.0
  • GDAL/OGR >=1.4.x
  • Qwt >= 5.0& (< 6.1 with internal QwtPolar)
  • expat
  • fcgi
  • gdal
  • grass
  • gsl-devel
  • iconv
  • pyqt4
  • qt4-devel
  • qwt5-devel-qt4
  • sip
  • spatialite
  • libspatialindex-devel
  • python-qscintilla
  • expat

安装好库之后安装剩余的其他软件,讲flex和bison的bin路径加到环境变量path中去。

3.生成编译文件

安装好所有的东西之后,打开CMake-gui,首先配置前两个source code和build the binaries,分别是源文件的路径和生成的编译文件的路径,配好之后点击Configure,选择VisualStudio10,也就是vs2010,然后就会出现一片红色报错,那是因为我们还没有配置好库的路径,分别配置好库的路径之后继续点Configure,然后直到最后没有报错出现Configuring done,最终的配置如下图所示:

注意:CMAKE的路径是最后编译后的文件生成路径,直接新建一个空的文件夹就行。把with里面的withbindings勾选去掉,还有一个问题就是expat的库,我安装osgeo4w时,安装expat后找不到他的库,然后我又重新下载编译的,如果你的osgeo4w的库里面有的话,直接添加,如果没有的话就跟我一样,重新下载编译,其他的你找不到的库就留空就行。 最后点击Generate,然后到你的build binaries里面看是不是生成了很多的文件,包含一个vs的工程文件,如下图所示:

4.编译工程

打开vs2010,打开qgis2.4.0.sln,然后里面就导入所有的工程,你可以选择生成整个解决方案,那样时间会很长,如果只是需要得到开发库文件的话,只需要编译install工程,但是单独编译这个工程好像不行。

注意 : 1.在编译的过程中可能会提示找不到unistd.h文件,讲flex安装目录下的include文件夹下的unistd.h复制到D:\Program Files\Microsoft Visual Studio 10.0\VC\include(vs的安装目录)里,然后重新编译就可以了。
2.编译过程中可能会报spatialite相关的错误,解决方案是讲osgeo4w/include目录下的spatialite.h文件复制覆盖到osgeo4w/include/spatialite文件加下。重新编译。

最后就可以在CMAKE填的那个路径下面看到生成的所有文件。类似下图所示:

接下来就可以得到完整的开发库了,inlude文件夹下是所有的头文件,lib文件夹下包括四个主要的lib文件,bin文件夹下包括四个主要的dll文件。

注意 :要使项目运行,还要将qgis安装目录(别跟编译目录搞混,在官网可以下载)下的bin文件夹下的所有dll文件和刚才得到的四个dll文件放在一起构成运行的所有需要的dll文件,在运行的过程中,还有可能提示缺少libxml2.dll,直接在网上下载或者安装osgeo4w时,勾选libxml2,到bin目录下拷贝一份到项目的dll文件目录中。

至此,所有编译和配置环境相关的工作就完成了,大家在编译或者配置的过程中也许还会碰到其他的问题,欢迎与我交流。