今天心血来潮,将QGis在github上的代码更新后,又编译了一下。留意到源代码包里面的INSTALL文件有更新,于是本次编译完全基于官方的编译说明。编译过程非常顺利,除了在CMake的第一次configure的时候弹出了一个小错误外,后续的工程生成、VS编译都完全没有遇到错误。特此记下源码build过程,供大家参考。
本次分为两个部分,分别介绍QGis二次开发包的下载以及QGis2.9的源码编译过程。

QGis二次开发包下载

QGis提供了编译好的二次开发包,可以通过osgeo4w这个工具来下载。具体操作步骤如下:

1、下载osgeo4w

下载地址:
32位:http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86.exe
64位: http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86_64.exe

2、在osgeo4w安装过程中选择QGis二次开发包

安装过程中选Advanced Install就可以下载资源包了,安装路径建议保持默认路径。当然也可以修改,只是修改后会牵涉到相应的路径变量的修改,保持默认会比较简单些。

3、选择QGis二次开发包

一路next到下一步的界面时,在Search栏目里输入“qgis”,可以查询到QGis的相关资源。打开Libs目录,如下图,标红框的库就是QGis可用于二次开发的资源库。其中”ltr”的版本表示long time release, 是比较稳定的发布版本。点击相应的库,使之由符号”n/a”变成一个打上叉的方框形状就表示选中相应的文件了,之后将会下载这个文件。
然后一直“下一步”,下载安装完成之后,就可以在osgeo4w的安装路径下面找到QGis开发相关的include和lib文件夹了。(注意:我之前安装过,所以在相应资源前面显示的是”Keep”字样,没有安装之前应该是”Skip”字样,截图仅供参考)


-

QGis2.9源码build及编译

build的过程主要是利用cmake进行,关键点在于对依赖库的设置。而 这一步一旦设置好之后,在编译器里进行编译就非常顺利了。

1、下载 osgeo4w 及 cygwin

osgeo4w的下载地址:
32位:http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86.exe
64位: http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86_64.exe
cygwin的下载地址:
32位:http://cygwin.com/setup-x86.exe
64位:http://cygwin.com/setup-x86_64.exe
osgeo4w主要用来安装各种依赖库,而cygwin则是用于安装flex和bison这两个工具。

2、osgeo4w的安装

安装过程与上文中基本一致,所不同的地方在于安装的依赖库。
同样,选择Advanced Install安装方式,并选择默认的Install from internet。安装路径建议保持默认路径。当然也可以修改,只是修改后会牵涉到相应的路径变量的修改,保持默认会比较简单些。



-
一直点击“下一步”,在安装过程进行到如下图所示界面时,在search栏目中填入相应的依赖库名称进行搜索,点击相应的库,使之由符号”n/a”变成一个打上叉的方框形状就表示选中相应的文件了,之后将会下载这个文件。(注意:我之前安装过,所以在相应资源前面显示的是”Keep”字样,没有安装之前应该是”Skip”字样,截图仅供参考)

-

具体需要安装的依赖库包括:
- expat
- fcgi
- gdal
- grass
- gsl-devel
- iconv
- pyqt4
- qt4-devel
- qwt5-devel-qt4
- sip
- spatialite
- libspatialindex-devel
- python-qscintilla

记住在搜索的时候选择下载的文件应该是在Libs目录下的,至于有时候会有很多个名字相近或者后缀名不同的文件被搜索到,大部分都可以通过文件描述来排除不合适的文件。不过不确定的话就都下载也没关系的,原则就是宁多勿少。
然后一直”下一步”就可以顺利安装完成了,完成后会有一个提示让重启电脑,重启一下就好了。

3、cygwin的安装

这个软件的安装界面同osgeo4w基本相同,也是同样Install from internet,就可以一路”下一步”进行下去了。同样,安装路径建议保持默认路径。当然也可以修改,只是修改后会牵涉到相应的路径变量的修改,保持默认会比较简单些。
到达选择安装资源库文件的界面,同样在Search栏目中填入相应的名称搜索即可。这里需要搜索安装的是”flex”和”bison”。要注意的是,这一次应该选择Devel目录下的资源文件,而不是Libs。这个安装不需要重启,安装完成关掉就行。(注意:我之前安装过,所以在相应资源前面显示的是”Keep”字样,没有安装之前应该是”Skip”字样,截图仅供参考)


4、下载安装Cmake

下载地址:

http://www.cmake.org/files/v3.0/cmake-3.0.2-win32-x86.exe
这个安装就跟windows的大多数软件一样很常规了,就不赘述了。

5、源代码包生成IDE工程文件

到达这一步,准备工作就基本完成了,可以开始正式生成IDE的工程文件了。我后续的步骤与以前的文章有很大不同(以前写的QGis1.8版本的文章链接),之前那个方法比较繁琐,但也是可行的。现在这个方法更为简洁,而且基本不会出现错误。
首先,新建一个文本文件,并将它的后缀名改成”.bat”,表示批处理文件。用记事本打开这个文件,将下面的代码粘贴进去:

@echo off
set VS10COMNTOOLS = D:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\
call "D:\Program Files\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 set INCLUDE=%INCLUDE%;C:\Program Files\Microsoft SDKs\Windows\v7.1A\include
set LIB=%LIB%;C:\Program Files\Microsoft SDKs\Windows\v7.1A\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.
@set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\include
@set LIB=%LIB%;%OSGEO4W_ROOT%\lib;%OSGEO4W_ROOT%\lib @cmd

这段代码当中,我们需要注意的地方如下:
“VS10COMNTOOLS”:根据Visual Studio的版本不同会有不一样的地方,你只需要查看后面的路径是不是与你本机VS安装路径中一致就行。如果不一致,则只需将版本对应的地方改成与你安装的版本一致的路径。同样第二行”Call”中的路径也要对应于VS版本号。例如如果是VS2008,这两行代码就应该变成:

set VS90COMNTOOLS=%PROGRAMFILES%\Microsoft Visual Studio 9.0\Common7\Tools\
call "%PROGRAMFILES%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86

接下来的两行代码中,指明的windows SDK路径也会根据windows版本不同而不同。这里我使用的是windows 10,因此后面的路径为”v7.1A”。大家只需更改为对应自己机器的相应版本号路径就行了。
讲到这里我想大家都看明白了,再接下来的代码全部都是与osgeo4w、cmake和cygwin的安装路径有关的。如果之前安装的时候默认路径,那么这里就不需要改。安装的时候把路径改了,这里就把相应的路径字符串改成安装时指定的路径。
修改完后,保存这个”.bat”文件,文件名无所谓。

然后,按快捷键win+R调出运行窗口,并输入”cmd”,回车,打开命令行窗口。在命令行窗口中执行刚刚新建的”.bat”文件。执行完毕后会设置好相应的依赖库路径变量。


然后继续运行“cmake-gui.exe”,打开CMake。


进入GUI,首先分别在源代码路径和生成文件路径选择相应的文件夹位置。之后,点击Configure按钮。


选择对应的编译器版本,这里选用的是Visual Studio 10 2010


点击确定就开始配置源代码文件了。我配置的时候出现了一次错误,如下图所示。这个问题是由于缺少了某些插件的依赖库导致的,我们可以通过不Build这些插件来避免这个错误。


事实上,必须的编译选项我们只要”With_Desktop”以及” With_Internal_Qextserialport”就行了。

这时,再点击Configure按钮就没有错误了,然后再点击旁边的Generate按钮,就能成功生成VS2010的工程文件了。


6、源代码工程编译

双击打开”qgis2.9.0.sln”这个工程文件,就可以加载工程到VS中了。总共有148个项目。


先将编译模式改成”RelWithDebInfo”


之后生成项目就行了。
当然,你也可以选择“ALL_BUILD”,但这样会比较耗时。比较快速的办法是,先全部选中子工程,右键,卸载项目

然后只用单独加载
- ui
- qgis_core
- qgis_analysis
- qgis_gui
- qgis_app
- qgis
- ogrprovider
- gdalprovider
单独生成这几个项目,就能够成功编译了。生成”exe”运行之前,需要将所需的”dll”文件都拷贝到”exe”的目录下。最简单的做法就是将你本机QGis的安装路径找到,在”bin”文件夹下面选中所有”dll”文件,然后一起复制到编译生成的”exe”文件夹里面。当然,没有安装QGis的话,需要将Qt4的”dll”文件、osgeo4w安装路径下”bin”文件夹中的”dll”文件,以及别的依赖的”dll”文件都拷贝过来才能正确运行。
需要说明的是,这样编译出来的exe运行后可能会有个别工具栏图标不显示的情况,但除此之外没有别的问题。

最后

我按照这种方式编译并没有产生任何编译错误,我希望参照我的方法的朋友也能顺利编译,如果有问题可以多多交流和分享,谢谢。
---------------------
作者:Jacory_Gao
来源:CSDN
原文:QGis2.9在windows下的编译以及二次开发包下载

版权声明:本文为博主原创文章,转载请附上博文链接!

[转]QGis2.9在windows下的编译以及二次开发包下载的更多相关文章

  1. 原创 C++应用程序在Windows下的编译、链接:第一部分 概述

    本文是对C++应用程序在Windows下的编译.链接的深入理解和分析,文章的目录如下: 我们先看第一章概述部分. 1概述 1.1编译工具简介 cl.exe是windows平台下的编译器,link.ex ...

  2. 【FFmpeg】Windows下FFmpeg编译

    由于FFmpeg是基于Linux开发的开源项目,源代码和Windows下最常见的Visual Studio提供的C/C++编译器不兼容,因此它不能使用MSVC++编译,需要在Windows下配置一个类 ...

  3. C++应用程序在Windows下的编译、链接(一)概述

    C++应用程序在Windows下的编译.链接(一)概述 本文是对C++应用程序在Windows下的编译.链接的深入理解和分析,文章的目录如下: 我们先看第一章概述部分. 1概述 1.1编译工具简介 c ...

  4. ACE在windows下的编译及配置(VS2010)

    ACE在windows下的编译及配置(VS2010) 分类:             -[小西南]-              2013-08-06 16:17     2354人阅读     评论( ...

  5. windows下rabbitmq-c编译(带openssl、无需MinGW)

    因为项目原因,需要使用到rabbitmq的c客户端库.首先,参见上一篇windows下openssl编译,如果已经使用cmake编译过了,则先delete cache(File-Delete Cach ...

  6. Windows下PythonQt编译(vs2015+Qt5.11.2+PythonQt 3.2)

    后记: 由于自己low,没有下载罪行的python3.2导致编译上遇到种种问题,后文可以参考,建议看: <Windows7 VS2015 下编译 PythonQt3.2> https:// ...

  7. Windows下PythonQt编译(vs2015+Qt5.11.2+PythonQt 3.2)探索

    时间:2018年10月20日 笔者最近在做Qt方面的开发工作,需用到脚本程序对程序内部进行扩展,就很自然的想到了PythonQt,下面介绍PythonQt在Windows下的的安装编译心得,水平有限, ...

  8. 设置 Quick-Cocos2d-x 在 Windows 下的编译环境

    http://cn.cocos2d-x.org/tutorial/show?id=1304 设置 Quick-Cocos2d-x 在 Windows 下的编译环境 Liao Yulei2014-08- ...

  9. JAVA 基础开发环境 vscode 搭建 Windows下VSCode编译运行简单java

    JAVA 基础开发环境 vscode 搭建 来源 https://www.cnblogs.com/freewsf/p/7744728.html 对于使用 Visual Studio Code 的 Ja ...

随机推荐

  1. 【开发工具之Spring Tool Suite】6、用Spring Tool Suite简化你的开发

    如果你是一个喜欢用spring的人,你可能会在欣赏spring的强大功能外,对其各样的配置比较郁闷,尤其是相差较大的版本在配置文件方面会存在差异,当然你可以去花不少的时间去网上查找相关的资料,当你准备 ...

  2. wcf json参数返回失败问题

    问题: 最近写了一个接口,提示连接失败,于是在本地发布了一下,然后模拟post请求进行本地调试,发现能正常进入接口,中间也没问题,一直走到最后一步return时,也能return,但是就是返回不了数据 ...

  3. inheritPrototypeChain.js

    // 原型链 // 其基本思路是利用原型让一个引用类型继承另一个引用类型的属性和方法 function Person(){ this.name = "Person"; } Pers ...

  4. Installing Fonts programatically C#

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  5. Java执行sh等

    1.通过java代码,调用bat.shell等脚本或者命令 1)使用Runtime的exec()方法,会返回一个用于管理操作系统进程的Process对象 Process process =null; ...

  6. 【读书笔记】iOS-button只显示在一个界面的右下角,不管界面大小怎么变化(xib,没有使用自动布局)(一)

    一,新建立一个工程,Hello,如图所示. 二,Xcode--->New--->File--->FirstViewController---->选中Also create XI ...

  7. Power BI 与 Azure Analysis Services 的数据关联:2、Azure Analysis Services与 本地版本的 SQL Analysis Services 连接

    Power BI 与 Azure  Analysis Services 的数据关联:2.Azure  Analysis Services与 本地版本的 SQL   Analysis Services ...

  8. Flutter 布局(七)- Row、Column详解

    本文主要介绍Flutter布局中的Row.Column控件,详细介绍了其布局行为以及使用场景,并对源码进行了分析. 1. Row A widget that displays its children ...

  9. python第九十五天--js正则

    定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m 表示多行匹配 JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^ ...

  10. python第十二天 生成器,迭代器,内置函数

    第二模块学习:  生成器,迭代器,内置函数 生成器特点:只有在调用时才会生成相应的数据,运行的速度快! 示例: def fil(max):#斐波那契数 n,a,b=0,0,1 #定义初始数据 whil ...