您的位置:首页 > 编程语言 > Qt开发

QGIS2.18.4+QT5.7.1+VS2015编译方法

2017-04-21 17:18 246 查看


1.安装QT

QT官网下载:http://download.qt.io/archive/qt/

我安装的QT 版本是:qt-opensource-windows-x86-msvc2015_64-5.7.1.exe


2.安装VS2015 与QT Addin


3.下载并安装以下工具软件

下载并安装以下软件包:
ToolWebsite
CMakehttps://cmake.org/files/v3.7/cmake-3.7.2-win64-x64.msi
GNU flex, GNU bison and GIThttp://cygwin.com/setup-x86.exe (32bit) or http://cygwin.com/setup-x86_64.exe (64bit)
OSGeo4Whttp://download.osgeo.org/osgeo4w/osgeo4w-setup-x86.exe (32bit) or http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86_64.exe (64bit)
ninjahttps://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip
OSGeo4W不仅为当前的QGIS发行版提供了准备好的软件包,而且还为每个主机的夜间构建提供了可用的软件包,同时也提供了构建它的大部分依赖关系。如果用户要要编译32位的QGIS请用32位的OSGeo4w下载,如果用户要要编译64位的QGIS请用64位的OSGeo4w。32位的在下载时会下载32位的依赖库,64位的在下载时会下载64位的依赖库。
对于QGIS构建,您需要从cygwin安装以下软件包:

bison
flex
git

注:

flex和 bison可以从cygwin下载,但是要注意32位还是64位,32位的在下载时会下载32位的,64位的在下载时会下载64位的。安装地址不要带空格和中文。也可以从我提供的以下的链接直接下载解压:
链接:http://pan.baidu.com/s/1cpfWtg 密码:igia
git可以不用下载,这个主要是用来下载QGIS源码包的,下载QGIS源码包我们要以从官网上下载。

http://qgis.org/downloads/qgis-latest.tar.bz2

和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
这也可以选择上述软件包所依赖的软件包。要注意的是,上述所有的软件包或依赖不能有空格或中文。


4. 使用CMake设置并构建Visual Studio项目

要启动具有VC ++和OSGeo4W变量的环境的命令提示符,将创建以下批处理文件(假定上述包安装在默认位置):

@echo off
set VS140COMNTOOLS=%PROGRAMFILES%\Microsoft Visual Studio 14.0\Common7\Tools\
call "%PROGRAMFILES%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86

set INCLUDE=%INCLUDE%;%PROGRAMFILES%\Microsoft SDKs\Windows\v7.1A\include
set LIB=%LIB%;%PROGRAMFILES%\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


将上述命令放入一个文本文件内,并将后缀改为“.bat“,然后以”管理员权限运行“!在执行bat后,有可能会执行不成功,那我们可以通过手动设置各个环境变量的方式进行设置。(我也是这么做的)。
在某个地方创建一个“build”目录。这将是生成所有构建输出的位置。
找到CMake的安装目录,以管理员的方式运行"cmake-gui.exe",然后设置qgis源码包的目录和项目的构建目录:



点击“Configure ”启动配置并选择VisualStudio
14 2015/VisualStudio 14 2015 X64并保留本机编译器,然后单击完成。
“Configure ”过程中,可能会出现配置不正常的项目,如果某个依赖项没有链接到,请手动选择链接目录。以下是我的配置信息,供您参考:













配置到“Configuring done",然后点击“Generate" 生成VS2015的项目解决方案,直到“Generating
done”,然后在项目目录中打开qgis-x.y.z.sln文件。
在使用ALL_BUILD目标构建QGIS之前,将Debug中的解决方案配置更改为RelWithDebInfo(发布调试信息)或Release(否则需要不包括的调试库)。
构建过程中可能会出现无法链接的错误,错误信息出现在proj.lib库中,我分析的主要原因可能是,下载的proj.lib不正常。所以我们需要自己生成proj4的库,生成方法请查看我的博客:http://blog.csdn.net/octdream/article/details/71307943
生成proj4后,将生的proj4的lib,include,dll覆盖OSGEO4W的对应的库文件(include,bin,lib)。
在构建过程中可能会出现“找不到EXPAT.H"文件的问题,我们只需要手动更改"EXPAT.H"所在的绝对路径就可以。



在构建过程中会出现如下错误:无法解析的外部符号_WinMain@16



解决方法是:选中该项目 然后 右键 -> 属性 -> 链接器->高级 -> 入口点 加入
mainCRTStartup,
需要修改的工程包括:qgis,qgis_bench,qbrowser,qgis_help
最后再次生解决方案,完美生成整个项目。
如果出现其它问题,或有什么错误欢迎留言指正,谢谢!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: