1 工具
OSGeo4W、Cmake 、GNU bison 与 GNU flex
2 配置开发环境
2.1 VS2010安装
……
2.2 Qt与插件安装
Qt版本4.8.5,插件版本1.1.11。
下载地址: http://download.qt.io/official_releases/vsaddin/
2.3 OSGeo4W安装及所需库下载
编译32位的QGIS时,下载安装32位的OSGeo4W;编译64位QGIS时,下载安装64位的OSGeo4W。因为使用不同版本的OSGeo4W时,下载的库是对应版本的库。
2.4 Cmake安装
Cmake需要2.8以上版本,可直接从https://cmake.org/download/,解压即可。
2.5 GNU bison 与 GNU flex 安装
bison和flex要用较新的版本,且安装目录不能用空格。
2.6 下载QGIS2.8.9源码
3 使用Cmake配置工程
3.1 配置环境变量
写一个脚本文件,设置 OSGeo4W等变量(将OSGEO4W、Bison、Flex、Cmake设置为自己的路径)。
@echo off
set LIB=%LIB%;C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Lib/x64
set OSGEO4W_ROOT=D:/OSGeo4W
call "%OSGEO4W_ROOT%/bin/o4w_env.bat"
path %PATH%;D:/win_flex_bison-latest;D:/cmake-2.8.12-win32-x86/bin
@set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%/include
@set LIB=%LIB%;%OSGEO4W_ROOT%/lib;%OSGEO4W_ROOT%/lib
@cmd
3.2 配置工程并编译
- 运行脚本文件,并从命令行启动Cmake
- 选择源代码目录和输出目录,点击Configure。将没有找到的路径手工设置,修改自动设置出错的路径。
注意: QextSerialPort 需要自己编译,参照http://www.tuicool.com/articles/naEjAzf - 点击generate生成VS2010工程。
编译之前,还需要做如下修改:
- 将Bison和Flex目录下的unistd.h复制到Microsoft Visual Studio 10.0安装目录下的\VC\include”目录中。
- 复制OSGeo4W目录下include\spatialite.h替换OSGeo4W目录下include\spatialite\spatialite.h。
- 修改QGIS源码src/core/pal/feature.cpp文件第85行finite为_finite。修改前:assert( finite( lx ) && finite( ly ) );修改后 assert( _finite( lx ) && _finite( ly ) )
打开Cmake输出目录下的qgis2.8.9.sln。可以全部编译,也可以只编译部分重要的qgis、qgis_analysis、qgis_core、qgis_gui、ui、ogrprovider、gdalprovider。