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

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.下载并安装以下工具软件

下载并安装以下软件包:

Tool Website
CMake https://cmake.org/files/v3.7/cmake-3.7.2-win64-x64.msi
GNU flex, GNU bison and GIT http://cygwin.com/setup-x86.exe (32bit) or http://cygwin.com/setup-x86_64.exe (64bit)
OSGeo4W http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86.exe (32bit) or http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86_64.exe (64bit)
ninja https://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 ”过程中,可能会出现配置不正常的项目,如果某个依赖项没有链接到,请手动选择链接目录。以下是我的配置信息,供您参考:

QGIS2.18.4+QT5.7.1+VS2015编译方法_第1张图片

QGIS2.18.4+QT5.7.1+VS2015编译方法_第2张图片

QGIS2.18.4+QT5.7.1+VS2015编译方法_第3张图片

QGIS2.18.4+QT5.7.1+VS2015编译方法_第4张图片

配置到“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"所在的绝对路径就可以。

QGIS2.18.4+QT5.7.1+VS2015编译方法_第5张图片

 

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

QGIS2.18.4+QT5.7.1+VS2015编译方法_第6张图片

 

解决方法是:选中该项目 然后 右键 -> 属性 -> 链接器->高级 -> 入口点 加入 mainCRTStartup

需要修改的工程包括:qgis,qgis_bench,qbrowser,qgis_help

最后再次生解决方案,完美生成整个项目。

如果出现其它问题,或有什么错误欢迎留言指正,谢谢!!!

你可能感兴趣的:(QT,第三方库编译技术)