当前位置: 首页 > news >正文

2. Windows+Msys2+QGis3.36.1编译运行

前言

  • 本章讲述在Windows Msys2环境下,编译QGis3.36.1可执行程序
  • 注意不同于常规的Windows+Vs编译,本教程使用的是Windows+Msys2
  • 使用Windows+Msys2的好处是可以在调试QGis源码==,二次开发可以调试QGisQGis C++插件也可以进行调试

QGis3.36.1编译运行

在这里插入图片描述

安装依赖

  1. 安装QGis依赖包
pacboy -S protobuf:p gdal:p libzip:p qca-qt5:p gsl:p exiv2:p hdf5:p libxml2:p netcdf:p opencl-icd:p pdal:p proj:p qt5-3d:p qt5-base:p qt5-declarative:p qt5-gamepad:p qt5-location:p qt5-serialport:p qt5-svg:p qtkeychain-qt5:p qtwebkit:p qscintilla-qt5:p qwt-qt5:p spatialindex:p cc:p cmake:p ninja:p opencl-clhpp:p qt5-tools:p python:p ccache:p

在这里插入图片描述

  1. 安装flex bison
    pacman -S flex bison
    在这里插入图片描述

  2. 其他需要安装的依赖
    pacman -S mingw-w64-ucrt-x86_64-gdb mingw-w64-ucrt-x86_64-pyqt-builder mingw-w64-ucrt-x86_64-pyqt5-sip mingw-w64-ucrt-x86_64-sip mingw-w64-ucrt-x86_64-draco mingw-w64-ucrt-x86_64-python-qscintilla-qt5

在这里插入图片描述
在这里插入图片描述

编译

  1. 切换到源码目录 cd "C:\Users\t\Documents\work\QGIS-final-3_36_1\build"
    在这里插入图片描述

  2. 执行Configure命令

cmake \
-G"Ninja" \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DPython_EXECUTABLE=${MINGW_PREFIX}/bin/python \
-DWITH_3D=ON \
-DWITH_PDAL=OFF \
-DWITH_CUSTOM_WIDGETS=ON \
-DQWTPOLAR_LIBRARY=${MINGW_PREFIX}/lib/libqwt-qt5.dll.a \
-DQWTPOLAR_INCLUDE_DIR=${MINGW_PREFIX}/include/qwt-qt5 \
-DWITH_INTERNAL_QWTPOLAR=OFF \
-DWITH_BINDINGS=ON \
-DWITH_GRASS=OFF \
-DWITH_DRACO=OFF \
-DUSE_CCACHE=ON \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX=C:/qgis_bin \
-S . \
-B build
  • 注意
  • WITH_BINDINGS 是python相关,如果想用Processing菜单中Toolbox,需要设置为=ON
  • CMAKE_INSTALL_PREFIX设置install的目标目录
    在这里插入图片描述
  1. 执行编译命令 cmake --build build
  • 开始编译
    在这里插入图片描述
    在这里插入图片描述

运行

  • python可以正常运行
    在这里插入图片描述

安装

cmake --install build
  • 编译出来Include lib等二次开发库
    在这里插入图片描述
    在这里插入图片描述

遇到的问题

  1. 编译报错
    在这里插入图片描述

  2. 启动qgis报错
    在这里插入图片描述
    在这里插入图片描述

  3. qgis启动界面过了之后,报python错误
    在这里插入图片描述

  4. qgis启动之后,发现Processing的插件没有正常加载
    在这里插入图片描述

如何解决这个问题呢?请看后边的章节

总结

  • 介绍了在Windows Msys2环境下编译运行QGis
http://www.xdnf.cn/news/333883.html

相关文章:

  • 【Python开源】深度解析:一款高效音频封面批量删除工具的设计与实现
  • Axios替代品Alova
  • nutui-uniapp项目:弹框、弹出层的组件选择问题(组件对比)
  • 基于腾讯云MCP广场的AI自动化实践:爬取小红书热门话题
  • STM32系统定时器以及微秒延时函数分析
  • 电池自动分选机:新能源时代的“质检卫士”
  • Excel学习笔记
  • 蓝桥杯第十六届c组c++题目及个人理解
  • C++入门(下)--《Hello C++ World!》(2)(C/C++)
  • 【C++】手搓一个STL风格的string容器
  • 【开源解析】基于Python的智能文件备份工具开发实战:从定时备份到托盘监控
  • 键盘固件刷写详解:Bootloader
  • AppInventor2如何实现写文件不覆盖,而是在文件尾部追加?
  • 使用 React 实现语音识别并转换功能
  • Java游戏服务器开发流水账(2)开发中Maven的管理
  • CROSS 技术全解析:边缘计算如何成为行业价值新引擎
  • Linux下使用openssh搭建sftp服务
  • SQL:MySQL函数:字符串函数
  • 金仓数据库征文-金仓KES数据同步优化实践:逻辑解码与增量同步
  • 深入理解负载均衡:传输层与应用层的原理与实战
  • KRaft (Kafka 4.0) 集群配置指南(超简单,脱离 ZooKeeper 集群)还包含了简化测试指令的脚本!!!
  • WSL部署CosyVoice
  • node.js 实战——express图片保存到本地或服务器(七牛云、腾讯云、阿里云)
  • 能耗优化新引擎:EIOT平台助力企业降本增效
  • 需求分析阶段测试工程师主要做哪些事情
  • 华为云Astro后端开发中对象、事件、脚本、服务编排、触发器、工作流等模块的逻辑关系如何?以iotDA数据传输过程举例演示元素工作过程
  • 精品,架构师总结,MySQL 5.7 查询入门详解
  • trae ai编程工具
  • C++ STL入门:set 集合容器
  • 从父类到子类:C++ 继承的奇妙旅程(1)