基于Qt5的QGIS编译
2016-07-02 23:50
218 查看
QGIS2.14 + Qt5.5.1编译
断断续续,感觉编译QGIS编译了好久,终于编译了一个好的。
Qgis是基于开源的库的Qt开发的一套优秀的开源桌面地理信息系统,其许多插件是基于pathon开发的,支持Windows\Linux\MacOS等操作系统,可以访问MySQL/PostGRE等数据库的空间数据,可以连接到OpenstreetMap拉取数据做本地分析和制图。
目前最新版的QGIS是2.14.3版本的,还有2.8.9版本是它的长期维护的稳定版,后者是基于Qt4.8和python2.7的,可以保证环境的稳定,但确实版本有点旧。Qt版本已经升级到了5.6版本的,python也已经到了3.6版本了。要使用Qgis进行二次开发或者学习,就必须自己进行源代码的编译,因为发布的安装版是release的,不能进行代码跟踪。
网上也有一些教程讲QGIS的编译的,有李明录大神编译的1.8版本的,他是用qt4编译的,按他的步骤来配置应该可以编译成功,
博客:http://blog.csdn.net/liminlu0314/article/details/17400075
还有一个QGIS二次开发群主 RunAway写的一篇,他是基于 Qt4和QGIS2.8版本的,他的博客上有许多相关的教程,初学者可以看下。
博客:http://blog.csdn.net/deirjie
从qgis2.10开始已支持Qt5了,但官方并不推荐使用Qt5进行代码的编译,因为可能会遇到许多的坑。直到现在qgis2.14.3, 官方也还是不建议使用Qt5编译。网上好多的教程所使用的三方库都是使用Osgeo4W进行下载的,这些库好多还都是基于Qt4版本编译的。我在编译过程中遇到过下面这些问题:
下载的三方库多, Camke 导出VS的工程 配置选项复杂,好不容易生成 vs的解决方案,到后面,你会发现,这只是很简单的一步,但没有东西参考下,对新手还是很费时的。
打开vs开始编译,过程中遇到的错,编译不过,在之前编译2.10版本的时候,那个版本刚支持Qt5版本,源码中有好几处还需要修改,多谷歌下,其实这些问题前面的大神已经找到解决方案了。
好不容易编译完成后,能不能运行,或有没有问题还是另一回事了。^_^
从去年编译完qgis2.10后有内存泄漏,跟过代码,也没找到是什么原因,最近看qgis2.10和2.14的源码变化还是比较大的,所以对2.14版本进行了编译,编译的也没有内存泄漏的问题了。在此,把我编译过程中遇到的问题做下记录,方便以后查看,写的不是很好,希望为曾和我一样的初学者提供点帮助。
![](http://img.blog.csdn.net/20160702235139975?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
下载然后解压到自己的目录下就可以了,编译过程中要使用到的工具型文件如下:后面会统一附上下载地址:
依赖三方库的版本信息:
编译qca,从svn拉取最新的源码,直接从camke导出工程 vs编译即可,注意cmake的版本我选择的3.4,之前用3.0.2导出的时候总是报错,不能成功,后来换了Cmake版本好了。
Qwt,qwtpolar,qwtpolar都是用Qt的.pro工程文件组织的,可以直接使用Creater编译或者 直接在小黑窗 下 qmake 即可。
至于gdal的编译,这个库很厉害的样子,编译的时候可以配置好多的插件,只需要在他的 nmake.opt 文件中进行配置的修改,具体的编辑可以参考李明录大神的博客,他写了好多关于gdal的文章,有兴趣的可以了解下。他默认的编译只需要配置三个选项,用文本编辑器打开nmake.opt文件,修改如下类容:
![](http://img.blog.csdn.net/20160702235300273?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
然后依次打开vs2010的命令提示符,执行如下命令
Nmake /f makefile.vc
Nmake /f makefile.vcinstall
Nmake /f makefile.vcdevinstall
该过程大概耗时10分钟左右吧,这样编译的是Release版本的动态库,如果要编译Debug’类型的东台库,要使用如下的命令:
Nmake /f makefile.vcDEBUG=1
Nmake /f makefile.vcDEBUG=1 install
Nmake /f makefile.vcDEBUG=1 devinstall
如果在编译过程中你好还配置了其他的依赖库文件的话,最好也区分下Debug和Release的,否则可能有莫名其妙的错误的。
其他库的编译也基本就是nmake 然后 install就可以完成的,至于要实现其他功能编译,最好的就是读它源码的帮助文档了。
这些路径中最好不要含有空格,中文等非法字符。下载后解压QGIS2.14的压缩包,然后在同级目录新建一个Build目录,用于保存CMake生成的工程文件和编译后的可执行文件。如下图所示。
![](http://img.blog.csdn.net/20160702235610980?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
接下来打开CMake的GUI程序来配置QGIS的工程文件。
![](http://img.blog.csdn.net/20160702235642337?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
然后点击configure。根据出现的红色的错误警告把需要的配置项依次配置进去,基本就OK了。
配置完成之后如果如果有这样的提示:SETUPAPI_LIBRARY
字样,进行如下操作,点击 Add Entry按钮添加一个配置项如下:
![](http://img.blog.csdn.net/20160702235659231?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
最后我所有配置完成之后如下图所示:
![](http://img.blog.csdn.net/20160702235710649?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20160702235727091?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20160702235737435?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
配置完成之后,应该就可以生成vs的解决方案了,在generate生成的时候,会有一些红色的警告,这个不用管,完成后打开
bulid文件夹如下所示:
![](http://img.blog.csdn.net/20160702235750138?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](http://img.blog.csdn.net/20160702235805373?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
出这个错误可能有以下几个原因:
一、新建项目是控制台应用程序而程序通过的是WinMian(及windows入口函数)
因为新建项目的时候选择的是控制台应用程序,控制台应用程序的入口是main。而在.CPP文件中提供的是windows入口函数WinMian。
解决办法:
(1)项目->属性->配置属性->C/C++ ->预处理器 中的【预处理器定义】 删除“_CONSOLE” 添加 “ _WINDOWS”
(2)项目->属性->配置属性->连接器->系统中的【子系统】设置为Windows(/SUBSYSTEM:WINDOWS)
(3)生成->重新生成解决方案
这样在启动qgis时会有一个小黑窗闪,很不爽。
二、这是我自己的解决方法,
解决办法:
在出现问题的解决方案上右键--属性--链接器---输入--附加依赖项:
![](http://img.blog.csdn.net/20160702235830124?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
注意Debug与Release版本的区别。再次执行编译,应该就没什么问题了。
![](http://img.blog.csdn.net/20160702235842322?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
最后附上资源下载链接地址:http://pan.baidu.com/s/1i5Jdc13
提取码:ub6m
断断续续,感觉编译QGIS编译了好久,终于编译了一个好的。
Qgis是基于开源的库的Qt开发的一套优秀的开源桌面地理信息系统,其许多插件是基于pathon开发的,支持Windows\Linux\MacOS等操作系统,可以访问MySQL/PostGRE等数据库的空间数据,可以连接到OpenstreetMap拉取数据做本地分析和制图。
目前最新版的QGIS是2.14.3版本的,还有2.8.9版本是它的长期维护的稳定版,后者是基于Qt4.8和python2.7的,可以保证环境的稳定,但确实版本有点旧。Qt版本已经升级到了5.6版本的,python也已经到了3.6版本了。要使用Qgis进行二次开发或者学习,就必须自己进行源代码的编译,因为发布的安装版是release的,不能进行代码跟踪。
网上也有一些教程讲QGIS的编译的,有李明录大神编译的1.8版本的,他是用qt4编译的,按他的步骤来配置应该可以编译成功,
博客:http://blog.csdn.net/liminlu0314/article/details/17400075
还有一个QGIS二次开发群主 RunAway写的一篇,他是基于 Qt4和QGIS2.8版本的,他的博客上有许多相关的教程,初学者可以看下。
博客:http://blog.csdn.net/deirjie
从qgis2.10开始已支持Qt5了,但官方并不推荐使用Qt5进行代码的编译,因为可能会遇到许多的坑。直到现在qgis2.14.3, 官方也还是不建议使用Qt5编译。网上好多的教程所使用的三方库都是使用Osgeo4W进行下载的,这些库好多还都是基于Qt4版本编译的。我在编译过程中遇到过下面这些问题:
下载的三方库多, Camke 导出VS的工程 配置选项复杂,好不容易生成 vs的解决方案,到后面,你会发现,这只是很简单的一步,但没有东西参考下,对新手还是很费时的。
打开vs开始编译,过程中遇到的错,编译不过,在之前编译2.10版本的时候,那个版本刚支持Qt5版本,源码中有好几处还需要修改,多谷歌下,其实这些问题前面的大神已经找到解决方案了。
好不容易编译完成后,能不能运行,或有没有问题还是另一回事了。^_^
从去年编译完qgis2.10后有内存泄漏,跟过代码,也没找到是什么原因,最近看qgis2.10和2.14的源码变化还是比较大的,所以对2.14版本进行了编译,编译的也没有内存泄漏的问题了。在此,把我编译过程中遇到的问题做下记录,方便以后查看,写的不是很好,希望为曾和我一样的初学者提供点帮助。
1 、准备工作:
最新版的qgis2.14从其官网下载 地址:http://qgis.org/downloads/下载然后解压到自己的目录下就可以了,编译过程中要使用到的工具型文件如下:后面会统一附上下载地址:
工具 | 版本号 |
Cmake | 3.5.2_x86 |
Qt | 5.5.1 msvc2010 |
Vs | 2010旗舰版 |
flex | 2.5.6 |
bison | 3.0 |
python | Python3.3.4 |
| |
库名称 | 版本号 | 源码地址 | ||||
Gdal | 2.1.0 | http://trac.osgeo.org/gdal/wiki/BuildHints | ||||
Geos | 3.5.0 | http://svn.osgeo.org/geos/trunk | ||||
Proj4 | 4.9.2 | https://github.com/OSGeo/proj.4 | ||||
Sqlite3 | 3.7.17 | https://www.sqlite.org/ | ||||
Spatiallite | 4.3 | http://www.gaia-gis.it/gaia-sins/ | ||||
spatialliteindex | 1.8.5 | https://github.com/libspatialindex/libspatialindex.git | ||||
expat | 2.1.0 | https://sourceforge.net/projects/expat/?source=typ_redirec | ||||
qca | 2.1.0 |
| ||||
qwt | 6.1.3 | http://qwt.sourceforge.net/ | ||||
Qwtpolar | 1.2.0 | https://sourceforge.net/projects/qwtpolar/ | ||||
Qscintilla | Gpl2.9.2 | https://www.riverbankcomputing.com/software/qscintilla/download |
Qwt,qwtpolar,qwtpolar都是用Qt的.pro工程文件组织的,可以直接使用Creater编译或者 直接在小黑窗 下 qmake 即可。
至于gdal的编译,这个库很厉害的样子,编译的时候可以配置好多的插件,只需要在他的 nmake.opt 文件中进行配置的修改,具体的编辑可以参考李明录大神的博客,他写了好多关于gdal的文章,有兴趣的可以了解下。他默认的编译只需要配置三个选项,用文本编辑器打开nmake.opt文件,修改如下类容:
然后依次打开vs2010的命令提示符,执行如下命令
Nmake /f makefile.vc
Nmake /f makefile.vcinstall
Nmake /f makefile.vcdevinstall
该过程大概耗时10分钟左右吧,这样编译的是Release版本的动态库,如果要编译Debug’类型的东台库,要使用如下的命令:
Nmake /f makefile.vcDEBUG=1
Nmake /f makefile.vcDEBUG=1 install
Nmake /f makefile.vcDEBUG=1 devinstall
如果在编译过程中你好还配置了其他的依赖库文件的话,最好也区分下Debug和Release的,否则可能有莫名其妙的错误的。
其他库的编译也基本就是nmake 然后 install就可以完成的,至于要实现其他功能编译,最好的就是读它源码的帮助文档了。
2 、Cmake 导出vs 工程文件:
2.1 环境变量配置 :
Cmake、Flex、Bison和Qt这些路径中最好不要含有空格,中文等非法字符。下载后解压QGIS2.14的压缩包,然后在同级目录新建一个Build目录,用于保存CMake生成的工程文件和编译后的可执行文件。如下图所示。
接下来打开CMake的GUI程序来配置QGIS的工程文件。
然后点击configure。根据出现的红色的错误警告把需要的配置项依次配置进去,基本就OK了。
配置完成之后如果如果有这样的提示:SETUPAPI_LIBRARY
字样,进行如下操作,点击 Add Entry按钮添加一个配置项如下:
最后我所有配置完成之后如下图所示:
配置完成之后,应该就可以生成vs的解决方案了,在generate生成的时候,会有一些红色的警告,这个不用管,完成后打开
bulid文件夹如下所示:
2.2 编译过程问题
打开vs工程文件编译即可,最好先编译qgs_core,因为后面的都要依赖这个,这个成功了,其他的也应该没什么问题,所有项目编译完成后,会提示有3个工程失败,后来我看了下,是哪几个启动的exe,qgsbroeser,qgs,qgs_help,报错误如下所示:出这个错误可能有以下几个原因:
一、新建项目是控制台应用程序而程序通过的是WinMian(及windows入口函数)
因为新建项目的时候选择的是控制台应用程序,控制台应用程序的入口是main。而在.CPP文件中提供的是windows入口函数WinMian。
解决办法:
(1)项目->属性->配置属性->C/C++ ->预处理器 中的【预处理器定义】 删除“_CONSOLE” 添加 “ _WINDOWS”
(2)项目->属性->配置属性->连接器->系统中的【子系统】设置为Windows(/SUBSYSTEM:WINDOWS)
(3)生成->重新生成解决方案
这样在启动qgis时会有一个小黑窗闪,很不爽。
二、这是我自己的解决方法,
解决办法:
在出现问题的解决方案上右键--属性--链接器---输入--附加依赖项:
注意Debug与Release版本的区别。再次执行编译,应该就没什么问题了。
3 验证编译的qgis是否正确:
用查依赖工具depend查qgis的所有依赖项,丢到bin里面,然后在生成的目录下双击qgis启动图标,即可正常运行:最后附上资源下载链接地址:http://pan.baidu.com/s/1i5Jdc13
提取码:ub6m
相关文章推荐
- Python3 入门教程 简单但比较不错
- python3图片转换二进制存入mysql
- python3批量删除豆瓣分组下的好友的实现代码
- linux下python3连接mysql数据库问题
- Python3 能振兴 Python的原因分析
- 在windows系统中实现python3安装lxml
- Python3基础之基本运算符概述
- Python3基础之条件与循环控制实例解析
- Python3实现生成随机密码的方法
- Python3基础之输入和输出实例分析
- Windows下实现Python2和Python3两个版共存的方法
- Python3使用requests包抓取并保存网页源码的方法
- Python3 正在毁灭 Python的原因分析
- Python3连接MySQL(pymysql)模拟转账实现代码
- Python3基础之基本数据类型概述
- Python3基础之函数用法
- 让python同时兼容python2和python3的8个技巧分享
- Python3实现连接SQLite数据库的方法
- python3.3实现乘法表示例
- python3实现域名查询和whois查询功能