QGIS编译

  • [

    QGIS编译

    ]

  • 源码下载

    QGIS源码下载:https://github.com/qgis/QGIS/releases
    本文源码版本3.26.0

  • 环境下载

    Cygwin64

    1. 下载Cygwin64安装包,setup-x86_64.exe
    2. 安装Cygwin64,并安装Flex、Bison。
      Flex >= 2.5.6
      Bison >= 2.4

    OSGeo4W

    1. 下载OSGeo4W安装包,osgeo4w-setup.exe
    2. 安装OSGeo4W,并安装QGIS依赖环境qgis-dev-deps或qgis-ltr-dev-deps,本文安装的版本。

    CMAKE

    1. 下载安装CMake。https://cmake.org/download/
      本文Cmake3.22.3

    Visual Studio 2017 和 Visual Studio 2019

    下载安装Visual Studio 2017 和Visual Studio 2019社区版
    https://visualstudio.microsoft.com/zh-hans/downloads/
    图片说明
    安装C++桌面开发组件。除默认的以外,还需安装Windows 10 SDK(10.0.14393.0) ,会用到SetupAPI.Lib。
    图片说明

  • 开始编译

    CMAKE

    1. 运行cmkae.bat
      @echo off
      set VS150COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\
      call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
      set INCLUDE=%INCLUDE%;C:\Program Files (x86)\Windows Kits\10\Include
      set LIB=%LIB%;C:\Program Files (x86)\Windows Kits\10\Lib
      set OSGEO4W_ROOT=C:\OSGeo4W
      call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
      SET PYTHONHOME=%OSGEO4W_ROOT%\apps\Python39
      SET PYTHONPATH=%PYTHONHOME%;%PYTHONHOME%\Scripts
      set PYTHON_EXECUTABLE=%PYTHONHOME%/python3.exe
      PATH %PYTHONPATH%;%PATH%
      path %OSGEO4W_ROOT%\apps\qt5\bin;%PATH%
      set QT_PLUGIN_PATH=%OSGEO4W_ROOT%\apps\Qt5\plugins
      set O4W_QT_PREFIX=%OSGEO4W_ROOT:\=/%/apps/Qt5
      set O4W_QT_BINARIES=%OSGEO4W_ROOT:\=/%/apps/Qt5/bin
      set O4W_QT_PLUGINS=%OSGEO4W_ROOT:\=/%/apps/Qt5/plugins
      set O4W_QT_LIBRARIES=%OSGEO4W_ROOT:\=/%/apps/Qt5/lib
      set O4W_QT_TRANSLATIONS=%OSGEO4W_ROOT:\=/%/apps/Qt5/translations
      set O4W_QT_HEADERS=%OSGEO4W_ROOT:\=/%/apps/Qt5/include
      set O4W_QT_DOC=%OSGEO4W_ROOT:\=/%/apps/Qt5/doc
      set O4W_ROOT=%OSGEO4W_ROOT:\=/%
      set LIB_DIR=%O4W_ROOT%
      path %path%;C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64\c1.dll
      path %PATH%;C:\OSGeo4W\apps\Qt5\bin;C:\cygwin64\bin
      path %path%;C:\OSGeo4W\apps\gdal-dev\bin
      @set GRASS_PREFIX=C:\OSGeo4W\apps\grass\grass82
      @set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\include
      @set LIB=%LIB%;%OSGEO4W_ROOT%\lib;%OSGEO4W_ROOT%\lib
      set LIB=%LIB%;%OSGEO4W_ROOT%\apps\Qt5\lib;%OSGEO4W_ROOT%\lib
      set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\apps\Qt5\include;%OSGEO4W_ROOT%\include
      call "C:\Program Files\CMake\bin\cmake-gui.exe"

    配置cmake

    图片说明
     1.  选择路径

    运行代码

    1. qgis_core
      图片说明
    2. qgis_gui
      图片说明
    3. qgis_app
      图片说明
    4. qgis
      图片说明
    5. qgis_allbuild
      图片说明
    6. 将qgis项目设置为启动项,调试,运行成功
      图片说明
  • 改化界面和图标

    CMAKE

    1. 更改图标
      图片说明
    2. 更改标题
      更改标题部分的代码
      图片说明
  • 可能遇到的问题(以下问题以在编译包的环境中全部解决了,零报错)

    1不能加载sip模块,解决方法,将此处的qgis文件夹替换掉

    图片说明
    图片说明

    2cmd.exe已退出,解决方法,编译.ui文件

    命令行设置为"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_%(Filename).h" "%(FullPath)"
    说明为 Uic%27ing %(Identity)... 
    输出为.\GeneratedFiles\ui_%(Filename).h
    附加依赖性$(QTDIR)\bin\uic.exe
    链接对象选择 是

    然后编译当前选择的Ui文件,成功后编译整个项目
    图片说明
    图片说明

    3 链接错误或者缺少有关附加库问题

    通常表现为——无法解析的外部符号;找不到、打不开.lib文件等
    这与个人的主机环境有关,可以在“项目”->“属性”->“连接器”->“输入”附加依赖项中修改。
    Lib问题,检查附加依赖项
    可以在“项目”->“属性”->“连接器”->“输入”附加依赖项中查看修改;
    对于Release或者RelWithDebInfo版本,Lib路径基本如下图列举
    对于Debug版本,部分Lib库名后有d标识
    如下图的Qt5Cored即为Debug版本
    (Debug版本与Release(RelWithDebInfo)版本的Lib名称不同,但路径一致。在工程修改版本环境时会自动更新链接,更改库名。无需手动更改。)

    4 缺少可执行文件或者环境路径问题

    Dll问题,检查可执行文件目录,即检查环境路径
    可以在“项目”->“属性”->“VC++目录”->“可执行文件目录”中编辑查看
    主要检查有无以下路径:
    D:\QGIS\OSGeo4W64\apps\qt5\bin
    D:\QGIS\OSGeo4W64\apps\Python37
    D:\QGIS\OSGeo4W64\apps\Python37\Scripts
    D:\QGIS\OSGeo4W64\bin
    D:\Program Files\CMake\bin
    D:\QGIS\cygwin64\bin
    C:\WINDOWS\system32
    C:\WINDOWS
    C:\WINDOWS\system32\WBem

    5 C1083 keychain.h无法打开包含文件

    检查qgis_core中链接器,输入中添加附加包含目录Qt5Keychain.lib

    6 MSVCRT.lib(exe_winmain.obj) : error LNK2019: 无法解析的外部符号 WinMain

    新建项目是控制台应用程序,而程序通过的是WinMian(及windows入口函数)
    可以在“qgis_core项目”->“属性”->“连接器”->“输入”附加依赖项中修改添加
    D:\QGIS\OSGeo4W64\apps\Qt5\lib\qtmain.lib

    7 在python中执行from PyQt5.QtCore import * 提示引入模块找不到

    from qgis._core import *
    ImportError: DLL load failed: 找不到指定的程序。
    【解决方案】:使用镜像安装sip,pyqt5,pyqt5-tools
    pip install pyqt5 pyqt5-tools -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

    8 error MSB6006: “rc.exe”已退出,代码为 5

    在C盘下直接搜索该应用,将其路径配置到项目中即可

    9 严重性 代码 说明 项目 文件 行 禁止显示状态

    错误 MSB8066 “C:\OSGeo4W\QGIS\build\python\core\core.sip”的自定义生成已退出,代码为 1。 python_module_qgis__core C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets 241
    解决方法
    图片说明

全部评论

相关推荐

点赞 1 评论
分享
牛客网
牛客企业服务