国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

QGIS3.28的二次開發(fā)一:編譯工程

這篇具有很好參考價值的文章主要介紹了QGIS3.28的二次開發(fā)一:編譯工程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

更新:最近寫了個3.18.3版本的編譯教程,沒有出現(xiàn)任何問題。

QGIS3.18編譯教程_程序員班長的博客-CSDN博客

環(huán)境:VS2019+OSGeo4W+CMake_3.26+Cygwin64+QGIS_3.28

注意:一定要按照步驟順序來!

一、配置環(huán)境

(一)VS2019

VS2019下載鏈接https://my.visualstudio.com/Downloads?q=visual%20studio%202019&wt.mc_id=o~msft~vscom~older-downloads下載完成之后安裝即可,這里選擇的是免費社區(qū)版。安裝的時候選擇的組件為“使用C++的桌面開發(fā)”和“通用Windows平臺開發(fā)”。

(二)OSGeo4W

OSGeo4W下載地址https://download.osgeo.org/osgeo4w/v2/osgeo4w-setup.exe下載完畢后進行安裝,選擇Advanced Install,注意中間選擇網(wǎng)絡的時候選擇直接連接即可。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

?進去后搜索:qgis-ltr-deps,然后選擇ltr分支的3.28版本,直接下一步安裝即可。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

?安裝時會默認幫我們把依賴包也一同安裝,安裝完畢如圖所示。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

(三)Cygwin64

Cygwin64下載地址https://www.cygwin.com/setup-x86_64.exe

?下載完畢進行安裝,同樣選擇直接連接的方式。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

?安裝bison和flex

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

?QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

安裝完畢即可。?

(四)QGIS_3.28

下載QGIS_3.28的源碼包

QGIS_3.28源碼下載地址https://qgis.org/downloads/qgis-latest-ltr.tar.bz2

?下載完畢后,解壓到自定義目錄,我這里解壓到了OSGeo4W的根目錄。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

(五)CMake_3.26

CMake下載地址:Download | CMakehttps://cmake.org/download/

?下載完安裝即可。

二、CMake搭建工程

(一)配置環(huán)境變量

首先配置一下環(huán)境變量,這里有兩種方式。

1、第一種方式

新建一個bat文件,然后里面填入如下內(nèi)容。

@echo off
set VS190COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\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=D:\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_ROOT=%OSGEO4W_ROOT:\=/%
set LIB_DIR=%O4W_ROOT%
path %path%;C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.16.27023\bin
path %PATH%;D:\OSGeo4W\apps\Qt5\bin;C:\cygwin64\bin
@set GRASS_PREFIX=D:\OSGeo4W\apps\grass\grass83
@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軟件。

修改完畢后保存,然后使用管理員命令打開?Windows PowerShell,運行這個bat文件。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

?然后運行完畢會彈出來Cmake的窗口。

2、第二種方式

打開VS2019自帶的x64 Native Tools Command Prompt for VS 2019

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

然后把上面bat文件的命令全部復制粘貼過來就可以了,我更推薦使用這一種方法(后面有提到原因)。

(二)第一次Configure

?彈出來CMake的界面后,先選擇QGIS_3.28源代碼的存放路徑,再選擇項目編譯輸出的目標路徑,然后點擊Configure。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

(三)修復錯誤?

如果報錯,需要修復這些錯誤。我的錯誤有四個,分別是

Could not find GRASS 7

Could not find GRASS 8

ImportError: DLL load failed while importing Qsci:找不到對應模塊

Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)

1、設(shè)置GRASS的路徑

對于第一個和第二個問題,解決方式也很簡單,進入到OSGeo4W的安裝目錄,進入\apps\grass文件夾,看到我們安裝的grass版本是grass83

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

然后在 CMake的GRASS_PREFIX8的選項填入我們的路徑 D:\OSGeo4W\apps\grass\grass83,如果你的版本是grass7*,那就填到GRASS_PREFIX7的位置。7和8選填一個即可。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

2、安裝Python庫qscintilla

第三個問題是

ImportError: DLL load failed while importing Qsci:找不到對應模塊

?對于這個問題的解決方法,需要安裝一個第三方庫

pip install qscintilla -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

?但是呢,由于通過第一種方式設(shè)置的環(huán)境變量并不能對外部生效,所以我們的pip是執(zhí)行不了的。第二種方式就可以順利執(zhí)行pip命令。

直接在x64 Native Tools Command Prompt for VS 2019中輸入上面安裝庫的代碼即可。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

?安裝完畢的結(jié)果如下,輸入命令pip list可以看到qscintilla包安裝成功。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

對于第四個問題,由于QGIS項目在Windows下沒有用到PkgConfig,因此可以忽略。這里提供下解決方法。

Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)

出現(xiàn)這個問題的原因是我們的Windows系統(tǒng)沒有安裝pkg-config,需要進行安裝,再設(shè)置一下環(huán)境變量。

3、安裝pkg-config

pkg-config安裝過程如下

(1)用管理員權(quán)限打開Windows PowerShell命令行界面;

(2)輸入命令,然后選擇A;

Set-ExecutionPolicy AllSigned

(3) 輸入命令,choco安裝完成;

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

(4) 輸入命令安裝pkg-config,安裝完畢會顯示安裝的路徑;

choco install pkgconfiglite

(5)設(shè)置pkgconfig的環(huán)境變量,在安裝路徑找到pkg-config.exe的路徑,我的路徑是C:\ProgramData\chocolatey\lib\pkgconfiglite\tools\pkg-config-lite-0.28-1\bin

?然后設(shè)置環(huán)境變量,在系統(tǒng)變量里面增加一條環(huán)境變量

名稱為PKG_CONFIG_PATH,值為pkg-config.exe的路徑

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

設(shè)置完畢重啟電腦,重啟完電腦需要重新執(zhí)行第2.1步的配置環(huán)境變量。

?如果你沒有修改環(huán)境變量,就無需重啟電腦。?如果沒有關(guān)閉x64 Native Tools Command Prompt for VS 2019,但是Cmake已經(jīng)關(guān)閉,那么就再次輸入下面的命令來打開CMake軟件。

call "C:\Program Files\CMake\bin\cmake-gui.exe"

(四)修復完錯誤點擊Configure

在CMake窗口中再次點擊Configure即可,出現(xiàn)Configuring done。注意:出現(xiàn)Configuring done不一定代表沒問題,一定要檢查輸出日志!

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

(五)點擊Generate,并打開項目

出現(xiàn)Generating?done即可。然后點擊Open Project,會自動打開VS2019,然后加載QGIS項目。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

三、在VS2019中打開工程

(一)將環(huán)境切換為Release

項目加載完成后,將環(huán)境切換到Release,因為就算是Debug環(huán)境,編譯出來的程序也無法運行。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

(二) 編譯

在解決方案ALL_BUILD上點擊鼠標右鍵,點擊生成,這一步耗費的時間有點長,需要耐心等待。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

編譯有一個失敗的項目,叫python_module_qgis__gui,提示如下,導致運行程序的時候Python環(huán)境不能正確加載,目前還沒找到原因。不使用Python的話可以忽略。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

?(三)設(shè)置啟動項目

設(shè)置qgis為啟動項目

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

?(四)設(shè)置調(diào)試環(huán)境

在解決方案qgis上點擊鼠標右鍵----屬性----調(diào)試----環(huán)境中輸入QT5的bin路徑和plugins路徑

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

?(五)運行程序

點擊“本地Windows調(diào)試器運行程序”,運行程序。

如果啟動qgis.exe時報qgis_app.dll無法加載或找不到的問題,而該dll又在該目錄下,原因是調(diào)用qgis_app.dll時所依賴的其他dll未加載。

解決方法 :將D:\OSGeo4W\bin下的dll文件,以及D:\OSGeo4W\apps\Qt5\bin下的dll文件全部拷貝到qgis.exe所在目錄即可,這個目錄在CMake設(shè)置的build目錄下的output\bin\Release目錄下,我這里是D:\OSGeo4W\qgis_build\output\bin\Release。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

?再次點擊“本地Windows調(diào)試器運行程序”,運行程序。

出現(xiàn)了一個error,是python環(huán)境的問題(編譯時出現(xiàn)了一個失敗,推測與其有關(guān)),如果不需要使用python編程,可以忽略,目前還沒找到解決方法。如果有哪位開發(fā)人員解決了這個問題,請告知,非常感謝!

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

?點擊Close可以進入主程序。

QGIS3.28的二次開發(fā)一:編譯工程,QT,QGIS,c++,qgis,qt5,pyqt

?到此配置完畢。

參考教程如下:

QGIS源碼編譯:QGIS3.22.4+vs2019_qgis源碼下載_guoqiong07的博客-CSDN博客

【程序員編程日記】QGIS+VS2019+QT5.14編譯_嗶哩嗶哩_bilibili文章來源地址http://www.zghlxwxcb.cn/news/detail-619002.html

到了這里,關(guān)于QGIS3.28的二次開發(fā)一:編譯工程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • QGIS二次開發(fā)四:實現(xiàn)圖層列表

    QGIS二次開發(fā)四:實現(xiàn)圖層列表

    在實際開發(fā)中我們通常會遇到同時顯示多個圖層,并且還要實時顯示和隱藏各圖層的需求,如同 ArcGIS 的圖層列表那樣,界面左側(cè)顯示圖層列表,列出當前已加載的所有圖層,同時每個圖層前面有復選框可以控制圖層的顯示/隱藏;界面右側(cè)為畫布,按圖層列表的適當順序顯示

    2024年02月13日
    瀏覽(22)
  • Qgis二次開發(fā)-QgsMapTool地圖交互工具詳解

    Qgis二次開發(fā)-QgsMapTool地圖交互工具詳解

    1.簡介 QgsMapTool地圖工具是用于操作地圖畫布的用戶交互式工具。例如,地圖平移和縮放功能被實現(xiàn)為地圖工具。 QgsMapTool是抽象基類,以下是類的繼承關(guān)系: QgsMapToolEdit:用于編輯矢量幾何圖形的映射工具的基類? QgsMapToolEmitPoint:一個地圖工具,當單擊地圖時,它只是發(fā)出一

    2024年02月16日
    瀏覽(157)
  • Ubuntu 22.04 配置 QGIS二次開發(fā)環(huán)境

    源碼地址: https://github.com/qgis/QGIS/releases QGIS 官方指導文檔地址: https://github.com/qgis/QGIS/blob/release-3_26/INSTALL.md(此處為3.26的指導文檔,可以自行修改查看) sudo apt-get install bison ca-certificates ccache cmake cmake-curses-gui dh-python doxygen expect flex flip gdal-bin git graphviz grass-dev libexiv2-dev l

    2024年02月16日
    瀏覽(101)
  • QGIS二次開發(fā):集成二維CAD控件MxDraw

    QGIS二次開發(fā):集成二維CAD控件MxDraw

    本文記錄在QGIS中集成MxDraw控件的方法。 參見筆者博文“FreeCAD二次開發(fā):集成二維CAD控件MxDraw”所述的安裝方法。 參見筆者博文\\\"Windows 10下編譯安裝QGIS\\\"所述的編譯安裝方法。 按照QGIS的管理,Qt ui文件可放到src/ui目錄及其子目錄下。因此,可將MxDrawView.ui拷貝到src/ui/gd目錄下,

    2024年02月15日
    瀏覽(25)
  • 【QT+QGIS跨平臺編譯】之七:【libjpeg+Qt跨平臺編譯】(一套代碼、一套框架,跨平臺編譯)

    【QT+QGIS跨平臺編譯】之七:【libjpeg+Qt跨平臺編譯】(一套代碼、一套框架,跨平臺編譯)

    libjpeg是一個廣泛使用的jpeg圖像壓縮和解壓的函數(shù)庫,采用 C 語言開發(fā)。 2013年1月,Independent JPEG Group發(fā)布了版本9,對新引入的無損編碼模式進行了改進。2022年1月,發(fā)布了版本9e,是唯一真正的源參考JPEG編解碼器。 【libjpeg跨平臺編譯】:Windows環(huán)境下編譯成果(支撐QGIS跨平臺

    2024年01月25日
    瀏覽(97)
  • 【QT+QGIS跨平臺編譯】之一:【sqlite+Qt跨平臺編譯】(一套代碼、一套框架,跨平臺編譯)

    SQLite是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領(lǐng)域項目。它的設(shè)計目標是嵌入式的,而且已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。它

    2024年01月22日
    瀏覽(96)
  • 【QT+QGIS跨平臺編譯】之五:【curl+Qt跨平臺編譯】(一套代碼、一套框架,跨平臺編譯)

    【QT+QGIS跨平臺編譯】之五:【curl+Qt跨平臺編譯】(一套代碼、一套框架,跨平臺編譯)

    (libcurl編譯,依賴OpenSSL、libSSH2等庫) curl(CommandLine Uniform Resource Locator)主要功能就是用不同的協(xié)議連接和溝通不同的服務器,相當封裝了的socket。 libcurl支持http, https, ftp, gopher, telnet, dict, file, 和ldap 協(xié)議。libcurl同樣支持HTTPS證書授權(quán),HTTP POST, HTTP PUT, FTP 上傳(當然你也可

    2024年01月23日
    瀏覽(162)
  • 【QT+QGIS跨平臺編譯】之八:【zstd+Qt跨平臺編譯】(一套代碼、一套框架,跨平臺編譯)

    【QT+QGIS跨平臺編譯】之八:【zstd+Qt跨平臺編譯】(一套代碼、一套框架,跨平臺編譯)

    【libzstd跨平臺編譯】:Windows環(huán)境下編譯成果(支撐QGIS跨平臺編譯,以及二次研發(fā)) 【libzstd跨平臺編譯】?

    2024年01月25日
    瀏覽(165)
  • 【QT+QGIS跨平臺編譯】之三:【OpenSSL+Qt跨平臺編譯】(一套代碼、一套框架,跨平臺編譯)

    OpenSSL是一個開放源代碼的軟件庫包,應用程序可以使用這個包來進行安全通信,避免竊聽,同時確認另一端連接者的身份。這個包廣泛被應用在互聯(lián)網(wǎng)的網(wǎng)頁服務器上。 SSL是Secure Sockets Layer(安全套接層協(xié)議)的縮寫,可以在Internet上提供秘密性傳輸。SSL能使用戶/服務器應用

    2024年01月22日
    瀏覽(169)
  • Qt下開發(fā)基于QGIS的應用程序

    Qt下開發(fā)基于QGIS的應用程序

    由于有在背景地圖上進行動態(tài)軌跡(曲線)顯示的需要,故采用Qt+QGIS的方案! Qt5.12.12,VS2015編譯器,QGIS3.10.1。 在配置之前,電腦是新裝機的系統(tǒng),沒有任何相關(guān)軟件版本。 在Qt官網(wǎng)(https://download.qt.io/)或國內(nèi)鏡像網(wǎng)站(https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt)或網(wǎng)絡搜索

    2024年02月14日
    瀏覽(89)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包