QGis2.9在windows下的编译以及二次开发包下载
https://blog.csdn.net/deirjie/article/details/48216773
今天心血来潮,将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.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
- 1
- 2
接下来的两行代码中,指明的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运行后可能会有个别工具栏图标不显示的情况,但除此之外没有别的问题。
最后
我按照这种方式编译并没有产生任何编译错误,我希望参照我的方法的朋友也能顺利编译,如果有问题可以多多交流和分享,谢谢。
每一个不曾起舞的日子,都是对生命的辜负。
But it is the same with man as with the tree. The more he seeks to rise into the height and light, the more vigorously do his roots struggle earthward, downward, into the dark, the deep - into evil.
其实人跟树是一样的,越是向往高处的阳光,它的根就越要伸向黑暗的地底。----尼采
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话