QGIS开发教程(1)——QGIS开发准备工作

(本文为本人原创,请尊重个人劳动成果。未经本人许可,严禁转载!)

获取编译好的QGIS

QGIS是跨平台的,因此在不同平台上获取编译好的QGIS方法也不尽相同。
我不推荐直接从源码编译QGIS(但是需要保留一份源代码以供学习),因为QGIS的依赖库实在是太多了,配置比较复杂。并且,QGIS更新频繁,不可能每次出来新的Release,都要再来编译一遍啊。

1. Windows

Windows系统上,可以通过OSGeo4W项目 来获取包括QGISGDAL在内的开源空间库的二进制开发包。如果电脑是64位的,推荐使用64位的OSGeo4W。在安装的过程中,要选中"Advanced Install",然后要勾选"qgis-devel"
安装完毕后,基于VS2010编译的QGIS就配置好了。

2. Linux & Mac OS

在非Windows平台上安装QGIS,只需按照官方说明 操作即可。

基础学习

QGIS源代码托管在Github上面,(我是传送门 )。学习QGIS,少不了查阅源代码,因此我们有必要拖一份源代码到本机上来。

为了弄清楚QGIS源代码结构,我们有必要掌握以下工具的基本使用方法:

1. Git && Github

Git是一个分布式版本控制系统,读者可以阅读《Git教程》 来了解。
Github是一个代码托管网站,用户可以通过Git将代码托管在Github上面。目前,主流的开源项目都会将源代码托管在Github上。

2. Qt

QGIS是基于Qt4开发的(之前的博客介绍过Qt)。Qt目前最新版本是5.4,但是QGIS暂时只支持Qt4(QGIS最新版开始支持Qt5了,但需要自己编译)。

Windows系统下面,使用OSGeo4W安装QGIS后,应该也就自动安装好了Qt4

Qt入门推荐看这个系列:《Qt 学习之路 2》

3. Qt Creator(qmake)

本系列QGIS教程,使用Qt Creator作为IDE,因为使用Qt Creator来开发Qt项目是最爽的(并且是跨平台的)。
Qt Creator下载地址
一般在Qt Creator中的基于Qt的程序,大都由qmake构建,项目信息写在pro文件中(Qt Creator还支持CMake构建的项目)。

qmake是一个协助简化跨平台进行项目开发的构建过程的工具程序,Qt附带的工具之一 。
qmake能够自动生成Makefile、Microsoft Visual Studio 项目文件 和 xcode 项目文件。
不管源代码是否是用Qt写的,都能使用qmake,因此qmake能用于很多软件的构建过程。

by 维基百科——qmake

QGIS的代码结构

进入QGIS源代码文件夹,可以看见,其目录结构如下:

QGIS
├─.tx                        
├─cmake                 CMake相关文件
├─cmake_templates
├─debian                Debian系统相关配置文件
├─doc                   文档
├─i18n                  国际化文件(翻译)
├─images                图表
├─mac                   Mac OS系统相关配置文件
├─ms-windows            Windows系统相关配置文件
├─postinstall
├─python                PyQGIS
├─resources             资源文件
├─scripts               脚本文件
├─src                   C++源代码文件
├─tests                 测试
└─tools                    

其中,我们只关心src文件夹:

QGIS
├─src
│  ├─analysis            空间分析模块,对应qgis_analysis.dll
│  ├─app                 主程序,对应qgis-bin.exe
│  ├─astyle              Artistic Style
│  ├─browser             QGIS的浏览器,对应qgis-browser-bin.exe
│  ├─core                QGIS核心模块,对应qgis_core.dll
│  ├─crssync        
│  ├─customwidgets       QGIS在Qt Creator中的控件
│  ├─designer            
│  ├─gui                 QGIS的GUI界面模块,对应qgis_gui.dll
│  ├─helpviewer          QGIS帮助浏览器
│  ├─mapserver
│  ├─plugins             QGIS插件
│  ├─providers           QGIS数据Provider
│  ├─python              QGIS内置Python解析器模块,对应qgispython.dll
│  └─ui                  QGIS界面UI文件

由其源码我们看到,QGISCMake管理构建,内部采用模块化开发。

总结

如果现在电脑上按照上述要求,有了完整的QGIS-开发包(Win下面就是lib、dll和一堆头文件)和Qt4、QtCreator,那么就可以开始进行基于QGIS的开发了!