QGIS—windows编译

  • 偷懒,可以直接下载笔者配置好的解决方案OSGeo4W64.rar,qgis版本final-3_16_12,按照start.txt的顺序在cmd窗口运行vs2015打开解决方案即可编译:
    https://pan.baidu.com/s/1_4CgEGbz7MloD2mCsh1OIQ
    提取码:rixi

  • 想自己动手就继续往下看
    代码地址:https://github.com/qgis/QGIS.git
    编译版本:tags/final-3_16_12 到 tags/final-3_18_0
    说明:本文python模块没有编译通过,由于测试时最新库地址下载总是断,不管是否翻墙都无法下载完整。所以折中采用了国内源。有些小问题不影响使用。

1.所需环境

  • 创建目录E:\OSGeo4W64
  • 本次测试安装VS2015update3
    http://download.microsoft.com/download/5/d/1/5d1ec81e-bc59-448f-9ab6-27636d5cc18a/vs2015.3.com_chs.iso
  • CMake
    https://cmake.org/files/v3.12/cmake-3.12.3-win64-x64.msi
  • cywin64
    https://cygwin.com/setup-x86_64.exe
    通过cywin64安装GNU flex, GNU bison and GIT,安装后如下图
    cywin64安装bin目录需要写到path,否则后续缺少flex和bison,如果不加path,需要将flex和bison的exe以及依赖库拷贝到E:\OSGeo4W64,本次编译采用了后一种做法。
    在这里插入图片描述
  • OSGeo4W库
    这个理论上可以直接下载笔者提供的下载好的库,下载地址:如果选择这种方式,下面的步骤可以忽略。
    这里下载过程也说一下,下载安装文件https://download.osgeo.org/osgeo4w/osgeo4w-setup-v2.exe 这个库安装采用在线安装方式,(如下图四),最新的库地址在默认网址里,但是不管是否翻墙都无法下载完整,因此采用add添加国内源,库比较老,只能编译比较老的QGIS版本,本次测试3.16.12-3.18.0都可以,但依然会有一个错误,由于不关注python模块,所以就忽略了这个错误。下载选择目录E:\OSGeo4W64,安装时将msinttypes skip掉(如下图三),否则和vs头文件冲突编译不过,其他库选择了全部安装,因为本来国内这个库比较老,害怕少库。 下载完后,vs编译还是没有问题,但是运行析构崩溃(如下图二),因为这个地址的spatialindex的include、lib与dll版本不一致,通过查找本地下载目录的spatialindex的库,将同一个版本的include、lib和dll拷贝到对应位置,E:\OSGeo4W64\bin、E:\OSGeo4W64\include\spatialindex、E:\OSGeo4W64\lib
    在这里插入图片描述 图二
    图三在这里插入图片描述

图四在这里插入图片描述

  • ninja
    https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip
    解压后拷贝到E:\OSGeo4W64\bin目录下。

2.代码生成和编译

  • 修改E:\OSGeo4W64\QGIS\ms-windows\osgeo4w\msvc-env.bat,如果vs默认安装,vs路径不用修改,修改cywin和cmake路径地址为本地安装路径。
  • 下载上述qgis版本代码,本次测试下载路径为QGIS162
  • 新建文件OSGeo4W-dev.bat,写入如下内容,启动cmd窗口运行。
@echo off
call E:\OSGeo4W64\QGIS162\ms-windows\osgeo4w\msvc-env.bat x86_64
@cmd
  • 执行configonly.bat,生成解决方案。
cd E:\OSGeo4W64\QGIS162\ms-windows\osgeo4w
configonly.bat
  • 在同一个cmd窗口确保如下文件都执行了之后,以后打开解决方案都要如此,devenv命令启动vs2015,打开解决方案文件E:\OSGeo4W64\QGIS162\ms-windows\osgeo4w\build-qgis-test-x86_64\qgis.sln,编译,python的两个项目编译报”C1001 编译器内部错误”,不用就没管。
E:\OSGeo4W64\OSGeo4W-dev.bat
E:\OSGeo4W64\bin\gdal-dev-env.bat
devenv
  • 运行qgis,ALL_BUILD工程邮件属性–调试-> 命令-> C:\OSGeo4W64\QGIS\ms-windows\osgeo4w\build-qgis-test-x86_64\output\bin\RelWithDebInfo\qgis.exe如下图
    在这里插入图片描述
  • F5启动,项目过期编译点否,提示python模块加载失败如下图,关闭即可
    在这里插入图片描述

到此结束,运行效果如下所示,随便打开一个shp
在这里插入图片描述
参考文章:
https://github.com/qgis/QGIS/blob/final-3_16_12/INSTALL.md
https://blog.csdn.net/xiaozy12/article/details/108843224

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值