QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

时间:2021-02-27 08:59:46

由于工作要求,今年需要基于Qt搞跨平台的GIS。前期未曾接触过Qt,最近也简单学习了下,开源的QGIS是非常不错的学习资源,下了最新版的QGIS源码,不过在VS2015下却没法直接打开。网上查了很多资料,借鉴了很多前辈的经验(大部分文档QGIS源码的版本都比较老)。虽然过程很艰辛,不过最后总算编译成功且能运行了,心里倍激动。废话不多说,赶紧上干货,具体如下:

一、资源准备

  1、QGIS 2.18.15源码:

  地址:qgis-latest.tar.bz2(2018.01.19已更新到2.18.16,由于我18号下的,所以文中的针对的是2.18.15版本源码的,后续的编译应该差不多);

  2、Qt 5.9.3:

  地址:qt-enterprise-windows-x86-5.9.3(如果链接下载不了,请去官方地址下载,只用下载msvc2015_64即可,我用的是VS2015编译64位的);

  3、VS2015:

  这个就自己去下载安装了,比较简单(记得勾选VC++);另外,可以通过VS自带的工具和扩展,下载Qt插件,QtPackage,然后把Qt5.9.3下的msvc2015_64设置过去就行;

  4、CMake:

  地址:cmake-3.10.2-win64-x64

  5、cygwin(主要用于下载flex及bison)

  地址:Cygwin-setup-x86_64

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译  

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  说明:(1)View选择Category;(2)Search输入要下载的内容,本工具只用下载flex和bison;(3)选择Devel,展开,如果当前未下载则显示的是"Skip",点击会变成具体的版本,然后点击下一步即可下载(由于我这边都下过了,所以显示的是keep)。按照这里的说明,分别下载flex和bison即可;(4)上述路径不要有中文或空格。

  6、osgeo4w(主要用于下载gdal等)

  地址:osgeo4w-setup-x86_64

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  说明:(1)这里的操作和Cygwin基本一致;(2)Search输入要下载的内容,具体包括: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、qjson;(3)上述路径不要有中文或空格。

二、编译过程

  1、制作bat设置环境变量:

  先贴我这边的bat文件,保存成path.bat(随便命名就行)  

@echo off
set VS140COMNTOOLS = C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 set INCLUDE=%INCLUDE%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include
set LIB=%LIB%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib set OSGEO4W_ROOT=C:\QGIS\OSGeo4W64
call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
path %PATH%;D:\Program Files\CMake\bin;C:\QGIS\cygwin64\bin;C:\QGIS\OSGeo4W64\apps\Python36 @set GRASS_PREFIX=C:/QGIS/OSGeo4W64/apps/grass/grass-7.2.2
@set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\include
@set LIB=%LIB%;%OSGEO4W_ROOT%\lib;%OSGEO4W_ROOT%\lib @cmd

  说明:(1)VS140COMNTOOLS表示VS15,call后续跟的X64表示64位编译;(2)Include表示头文件,这里加了Win10系统的sdk;Lib表示编译的动态库;(3)Path表示环境变量;4)特别注意:GRASS_PREFIX的路径地址必须是“/”,Path路径多个;之间不能有空格。

  2、启动Cmake进行配置:

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  点击:Configure,如果遇到错误,则解决(手动配置路径即可),以下是我这边配置的最终图:

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  最终配置完成后,没有错误,图如下:

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  3、CMake生成解决方案:

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  4、启动VS编译解决方案:

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  打开解决方案后,默认有好几百个工程,编译太废劲,我这边只保留了以下几个,不用的都删了(后续若需要,则再加),选择RelWithDebInfo方式编译:

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  说明:

  (1)优先编译qgis_core,此工程编译通过后,再编译其他的;

  (2)编译过程中proj.lib相关报错,将名称换成proj_i.lib即可;

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  (3)找不到 <netinet/in.h>,注释掉即可;

  (4)编译qgis工程qtmain.lib报错的解决,更换地址采用5.9.3的

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  全部编译后,位于output目录下,最终编译后截图如下:

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  5、启动自己编译的Qt软件:

  将OSGeo4W64\apps\Qt5\bin下的dll全部拷贝到同目录下,启动qgis.exe,会报错如下:

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  此时,只需将OSGeo4W64\apps\Qt5\plugins文件下的platforms文件夹拷贝到刚才的目录即可,截图如下:

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

  最终启动qgis.exe,效果图如下(部分图标没有,功能不全,后续可逐渐加入其他工程编译)

  QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译的更多相关文章

  1. &lbrack;笔记&rsqb; Ubuntu 18&period;04源码安装caffe流程

    虽然Ubuntu 18.04可以通过apt安装caffe,但是为了使用最新的代码,还是值得从源码安装一遍的. 安装环境 OS: Ubuntu 18.04 64 bit 显卡: NVidia GTX 1 ...

  2. QGis&plus;QT5&period;9&plus;VS2017源码编译

    1.需要软件 VS2017 QT5.9.2 CMake 3.10.2 Cygwin osgeo4w QGIS源码 2.安装VS2017  过程省略 是由于机器上已经安装了VS2017 3.安装QT5. ...

  3. 在Ubuntu下编译WebKit源码--qt

    转载自:http://www.cnblogs.com/panderen/archive/2011/10/18/2216154.html 在朋友的介绍下有幸認识了WebKit这个让人心动的开源浏览器内核 ...

  4. &lbrack;笔记&rsqb; Ubuntu 18&period;04源码编译安装OpenCV 4&period;0流程

    标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 1080 CUDA:10.0 c ...

  5. 【黑客免杀攻防】读书笔记15 - 源码免杀、C&plus;&plus;壳的编写

    1.源码免杀 1.1 定位产生特征的源码 定位文件特征 1.根据MyCCL的特征码定位工具,定位出有特征的地址 2.根据VS的反汇编窗口,输入有特征的地址得到特征地址与源码的关系 3.插入Messag ...

  6. angular源码分析:angular源代码的获取与编译环境安装

    一.安装git客户端 1.windows环境推荐使用TortoiseGit. 官网地址:http://tortoisegit.org 下载地址:http://tortoisegit.org/downl ...

  7. Android源码分析(七)-----如何解决java编译版本问题

    一 : 问题描述 Your version is: java version "1.6.0_31" Java(TM) SE Runtime Environment (build 1 ...

  8. 如何找回微信小程序源码?2020年微信小程序反编译最新教程 小宇子李

    前言:在网上看了找回微信小程序源码很多教程,都没法正常使用.微信版本升级后,会遇到各种报错, 以及无法获取到wxss的问题.查阅各种资料,最终解决,于是贴上完整的微信小程序反编译方案与教程. 本文章仅 ...

  9. Spring源码解析 &vert; 第一篇 :IntelliJ IDEA2019&period;3编译Spring5&period;3&period;x源码

    前言 工欲善其事必先利其器.学习和深读Spring源码一个重要的前提:编译源码到我们的本地环境.这样方便我们在本地环境添加注释.断点追踪.查看类或接口的继承关系等等,更加高效的学习Spring源码.个 ...

随机推荐

  1. AngularJS之ng-class(十一)

    前言 本节我们来讲讲指令中的ng-class,通过添加ng-class来生成对应的样式,有时候得根据不同的条件来选择对应的样式,本节我们来看看ng-class的灵活性用法. ng-class使用字符串 ...

  2. Windows Service--Write a Better Windows Service

    原文地址: http://visualstudiomagazine.com/Articles/2005/10/01/Write-a-Better-Windows-Service.aspx?Page=1 ...

  3. BZOJ1769 &colon; &lbrack;Ceoi2009&rsqb;tri

    将所有点极角排序,建立线段树,线段树每个节点维护该区间内所有点组成的上下凸壳. 对于一个查询,二分查找出相应区间的左右端点,在线段树上得到$O(\log n)$个节点,在相应凸壳上三分查找出与斜边叉积 ...

  4. jmeter随笔(23)--在csv中维护变量参数

    点击标题下「蓝色微信名」可快速关注 坚持的是分享,搬运的是知识,图的是大家的进步,没有收费的培训,没有虚度的吹水,喜欢就关注.转发(免费帮助更多伙伴)等来交流,想了解的知识请留言,给你带来更多价值,是 ...

  5. Convert&period;ToString和ToString的区别

    Convert.ToString能处理字符串为null的情况,不抛出异常. ToString方法不能处理字符串为null的情况,会抛出异常.如:“未将对象引用设置到对象的实例”.

  6. spring线程池配置

    源自:http://zjriso.iteye.com/blog/771706 1.了解 TaskExecutor接口 Spring的TaskExecutor接口等同于java.util.concurr ...

  7. mysql查找字段在哪个表中

    select table_schema 数据库名称,table_name  表名 from information_schema.columns where column_name = 'compar ...

  8. CH2906 武士风度的牛&lpar;算竞进阶习题&rpar;

    水..... 直接bfs... #include <bits/stdc++.h> #define INF 0x3f3f3f3f using namespace std; typedef l ...

  9. BZOJ2406矩阵

    题目描述 题解 最大值最小,一眼二分没的说. 然后考虑建出这么个图,每行看做一个点,每列看做一个点,每个点看做一条连接行与列的边,源点向每行连s-mid__s+mid的边,行与列连L__R的边,列到汇 ...

  10. Codeforces Round &num;272 &lpar;Div&period; 2&rpar; B&period; Dreamoon and WiFi dp

    B. Dreamoon and WiFi 题目连接: http://www.codeforces.com/contest/476/problem/B Description Dreamoon is s ...