将QGIS官方的编译指南windows部分翻译一下,供大家参考。这个版本是QGIS源代码工程中2017年4月30日最后修改的版本,对应QGIS 2.99,也就是即将发布为QGIS 3.0的版本。
翻译:Jacory Gao
版本:2017年4月30日
本文是QGIS软件官方安装指南。本文中所描述的软件和硬件都有注册商标并具有合法使用许可。QGIS使用GNU General Public许可。详细信息可查看QGIS官方网站:http://qgis.org
本文描写的技术细节都经过了笔者最大努力验证,尽管如此,错误也在所难免,因此,所有文字并不做完全保证。笔者和编辑对本文的后果不承担任何责任。欢迎批评指正。
由于QGIS源码每次发布都会有变化,本文介绍的方法应该与发布的版本保持常态化的一致性。本文最新的master分支请见http://htmlpreview.github.io/?https://raw.github.com/qgis/QGIS/master/doc/INSTALL.html. 如果你希望编译QGIS的其他版本,请确保使用合适的发布分支。
请访问http://qgis.org 获取加入邮件列表(mailing list)的方法,加入到QGIS工程的构建工作中来。
文档编写人员注意:请将本文作为描述源码编译最主要的文档。请不要删除本提示。
文档编写人员注意:本文是由doc/INSTALL.t2t文件生成,如果想要更改本文内容,请确保更改那个文件,而不是在本文件上做修改。
QGIS, 像许多重大工程一样,使用CMake(http://www.cmake.org)作为源码构建工具。
构建源码需要的依赖库如下所述:
必需工具:
- CMake >= 2.8.6
- Flex >= 2.5.6
- Bison >= 2.4
必需依赖库:
- Qt >= 5.3.0
- Proj >= 4.4.x
- GEOS >= 3.4
- Sqlite3 >= 3.0.0
- SpatiaLite
- libspatialindex
- GDAL/OGR >= 2.0
- Qwt >= 5.0 & (< 6.1 with internal QwtPolar)
- expat >= 1.95
- QScintilla2
- QCA
- qtkeychain (>= 0.5)
可选依赖库:
- GRASS驱动和插件支持 - GRASS >= 6.0.0. QGIS可以和GRASS6或者GRASS7共同编译. 它也可以同时支持这两个版本的GRASS如果安装了rpath的话,具体使用的版本是由LD_LIBRARY_PATH或者PATH变量在运行时决定。
- georeferencer - GSL >= 1.8
- postgis数据库支持 - PostgreSQL >= 8.0.x
- gps插件 - gpsbabel
- mapserver导出以及PyQGIS - Python >= 3.3
- python支持 - SIP >= 4.12, PyQt >= 5.3 并且要与Qt版本吻合, Qscintilla2
- qgis mapserver - FastCGI
- oracle驱动 - Oracle OCI library
间接依赖:
一些由专有格式(例如,ECW,MrSid等)支持需要有相应的第三方库编译支持的GDAL。QGIS不需要任何其他库来编译,但是仅仅支持具有相应依赖的GDAL库来提供数据读写。请参见 http://gdal.org/formats_list.html 查看如何使GDAL支持那些专有格式。
本节描述了如何使用Windows平台下的Visual Studio编译器进行QGIS源码编译。这也是目前QGIS安装版本的编译方式(早期版本使用MinGW编译)。
本节描述了使用Visual Studio编译QGIS需要安装的软件环境
免费的安装程序可以从下面的链接下载:
http://download.microsoft.com/download/D/2/3/D23F4D0F-BA2D-4600-8725-6CCECEA05196/vs_community_ENU.exe
下载并安装以下程序:
工具 | 网址 |
---|---|
CMake | https://cmake.org/files/v3.7/cmake-3.7.2-win64-x64.msi |
GNU flex, GNU bison 以及 GIT | http://cygwin.com/setup-x86.exe (32bit) or http://cygwin.com/setup-x86_64.exe (64bit) |
OSGeo4W | http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86.exe (32bit) or http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86_64.exe (64bit) |
ninja | https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip |
OSGeo4W不仅提供了可用的QGIS发布版安装包和master分支的常态化编译版本,也提供了大多数编译QGIS所需的依赖库。
编译QGIS需要从cygwin安装以下软件:
- bison
- flex
- git
以及从OSGeo4W安装以下依赖库(选择Advanced Installation模式):
- expat
- fcgi
- gdal
- grass
- gsl-devel
- iconv
- libspatialindex-devel
- pyqt5
- python3-devel
- python3-qscintilla
- python3-nose2
- python3-future
- python3-pyyaml
- python3-mock
- qca-qt5-devel
- qca-qt5-libs
- qscintilla-qt5
- qt5-devel
- qt5-libs-debug
- qtwebkit-qt5-devel
- qtwebkit-qt5-libs-debug
- qwt-devel-qt5
- sip-qt5
- spatialite
这也会自动选择以上依赖库所需要的依赖项。
如果你安装其他软件包,可能会导致错误。尤其是确保不要安装msinttypes软件包,它会安装stdint.h文件到OSGeo4W[64]/include目录下,进而导致与Visual Studio本身的stdint.h文件冲突,致使编译某些模块失败。
本文早期的版本提供了所有上述依赖库的编译方法,如果你需要的话,可以切回到早期的分支等进行查看。
本节内容仅供参考,随着OSGeo4W和SDK的更新,本文可能会过时。ms-windows/osgeo4w/package-nightly.cmd被用来常态化编译并更新QGIS,它可能会包含本节没有提到的内容。
新建一个包含下面代码的批处理文件,可以创造一个同时包含VC++和OSGeo4W变量环境的命令行终端环境(假设上述的依赖库都安装在默认位置):
@echo off
set VS90COMNTOOLS=%PROGRAMFILES%\Microsoft Visual Studio 9.0\Common7\Tools\
call "%PROGRAMFILES%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86
set INCLUDE=%INCLUDE%;%PROGRAMFILES%\Microsoft SDKs\Windows\v7.1\include
set LIB=%LIB%;%PROGRAMFILES%\Microsoft SDKs\Windows\v7.1\lib
set OSGEO4W_ROOT=C:\OSGeo4W
call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
path %PATH%;%PROGRAMFILES%\CMake\bin;c:\cygwin\bin
@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
在命令行终端运行这个批处理文件,并使用git检出QGIS源码目录:
git clone git://github.com/qgis/QGIS.git
创建一个’build’目录在别的地方,用来存储源码构建生成的文件。
在终端运行’cmake-gui’命令,并在相应位置填写上源码目录路径,选择QGIS顶层目录。
如果bison和flex的路径为空,你需要使用短路径规则手动填写(例如,C:\Program Files 应该重写为 C:\Progra~n, 这里的n表示使用 dir /x C:\
命令时目标文件夹的显示顺序)。
确保‘BINDIGNS_GLOBAL_INSTALL’选项未被勾选,这样当运行INSTALL命令时,Python插件会被放置到输出目录。
单击Configure按钮开始配置工程,选择visual studio 9 2008版本,且保持native compiler选项默认,点击Finish按钮。
配置过程应该不会出现任何错误,这时你可以单击Generate来生成工程文件。
现在,关闭cmake-gui并继续在终端输入vcexpress打开Visual Studio,使用’文件/打开/工程/解决方案’命令打开QGIS工程输出目录下生成的qgis-x.y.z.sln工程文件。
在使用ALL_BUILD工程开始编译QGIS之前,将解决方案配置从Debug更改为RelWithDebInfo(Release with Debug Info)或者Release模式。(否则,你需要安装没有默认包含的debug版本依赖库)
编译完成之后可以使用INSTALL安装QGIS软件到系统中。
使用INSTALL安装QGIS软件默认会安装到c:\Programe Files\qgis目录(可以在cmake-gui中使用CMAKE_INSTALL_PREFIX变量改变这个安装路径)
同时你需要将所有依赖的DLL文件添加到QGIS安装目录,或者将他们分别加入到系统PATH环境变量中。
可以使用’qgis/ms-windows/osgeo4w’路径下名为’creatensis.pl’的Perl脚本文件创建一个独立的安装包程序。它会下载从OSGEO4W下载所有需要的依赖库并利用NSIS将它们重新打包进安装程序中。
这个脚本文件同时支持Windows和Linux运行。
在Debian/Ubuntu平台下,你可以仅安装‘nsis’软件包。
NSIS for Windows可以从下面的链接下载:
http://nsis.sourceforge.net/
Perl for Windows(包括其他像’wget’,’unzip’,’tar’,’bzip2’等依赖库)可以在下面的链接下载:
http://cygwin.com/
假如你已经完成了以上的打包步骤,如果你想要包含你自己的QGIS可执行程序,你需要使用’creatensis’脚本从Windows安装路径复制他们到ms-windows文件树中。
cd ms-windows/
rm -rf osgeo4w/unpacked/apps/qgis/*
cp -r /tmp/qgis1.7.0/* osgeo4w/unpacked/apps/qgis/
现在创建一个软件包:
./quickpackage.sh
完成以上步骤,你应该就拥有了一个自己的QGIS软件安装包以及在Windows运行它所需要的所有依赖库。
具体打包过程当前未列出,请参见:
‘ms-windows/osgeo4w/package.cmd’文件