QGIS開發筆記(二):Windows安裝版二次開發環境搭建(上):安裝OSGeo4W執行依賴其Qt的基礎環境Demo

红胖子(红模仿)發表於2024-05-23

前言

  使用QGis的目的是進行二次開發,或者說是融入我們的應用(無人車、無人船、無人機),本片描述搭建QGis二次基礎開發環境,由於實在是太長了,進行了分篇:

  • 上半部分:主要是安裝好後,使用QtCreator可以使用QGIs的apps下的Qt使用對應的編譯器編譯不帶qgis的空工程。
  • 下半部分:在上半部分基礎上新增qgis的依賴,並實現一個qgis的完全獨立模模組化的應用,讓沒有安裝qgis庫的使用工程模板可以開始二次開發編譯。

Demo

  空demo
  在這裡插入圖片描述

  執行qgis的demo
  請新增圖片描述

注意1:注意IDE

  基於Qtcreator,所以搭建QtCreator的IDE模組化QGIS基礎環境,後續qmake的載入看出使用的msvc2017x64的庫,沒有的話請安裝vs2017x64的msvc編譯器
  在這裡插入圖片描述

注意2:本次安裝途徑與直接安裝檔案不同

  這與直接透過下載QGIs的安裝檔案下載檔案是不同的:
  在這裡插入圖片描述

注意3:本途徑安裝已經指定了使用的Qt版本和QtSdk

  在這裡插入圖片描述

Windows上部署QGis二次開發環境

步驟一:下載安裝OSGeo4W安裝檔案

  下載地址:https://www.qgis.org/en/site/forusers/download.html
  在這裡插入圖片描述

  在這裡插入圖片描述

  

步驟二:安裝OSGeo4W

  在這裡插入圖片描述

  點選安裝:
  在這裡插入圖片描述

  選擇自定義安裝:
  在這裡插入圖片描述

  在這裡插入圖片描述

  在這裡插入圖片描述

  下面這個介面宣佈選擇開始選單都會有,直接下一步:
  在這裡插入圖片描述

  在這裡插入圖片描述

  選擇第一個挺快的,嘗試過其他國內源無法連線上:
  在這裡插入圖片描述

  輸入qgis-ltr,這代表帥選qgis的最新版本,這裡顯示是3.34,外面直接下的是3.36
  在這裡插入圖片描述

  在這裡插入圖片描述

  都同意下一步,最後開始下載:
  在這裡插入圖片描述

  在這裡插入圖片描述

  在這裡插入圖片描述

  在這裡插入圖片描述

  檢查一下:
  在這裡插入圖片描述

  最新的穩定釋出版本,檢查一下:
  在這裡插入圖片描述

  在這裡插入圖片描述

步驟三:開啟QtCreator配置qmake編譯器

  Qt5.15.x版本預設使用QtCreator6.x,但是我們先使用Qt5.9.3帶的QtCreator為4.4.1。
  在這裡插入圖片描述

  暫時也不知道lib是哪個msvc版本的,但是新增qmake就知道了,往下走:
  在這裡插入圖片描述

  在這裡插入圖片描述

  知道了msvc2017x64版本,就要配置編譯器了,本機已經安裝了vs系列,並且安裝了msvc2017x64版本,無需配置,配置頁面如下:

步驟四:新構建套件QGis3.34.7_Qt5.15.13_msvc2017x64

  注意名稱、編譯器(vs2017x64是msvc2017x64是v15版本)和qmake的版本選擇,配置透過則會是黃色驚歎號,構建套沒有問題。(構建套有問題則會是紅色,無法編譯使用。)
  在這裡插入圖片描述

步驟五:新建一個測試空工程檢測Qt配置

  在這裡插入圖片描述

  在這裡插入圖片描述

  在這裡插入圖片描述

  在這裡插入圖片描述

  在這裡插入圖片描述

  在這裡插入圖片描述

  在這裡插入圖片描述

  檢視“入坑一:jom編譯錯誤”解決,然後繼續:
  在這裡插入圖片描述

  檢視“入坑二:編譯uic.exe錯誤程式碼0xc0000135”解決,然後繼續:
  在這裡插入圖片描述

  至此,在QtCreator使用QGIs帶的QtSdk成功。

入坑

入坑一:jom編譯錯誤

問題

  Jom編譯錯誤
  在這裡插入圖片描述

原理

  使用nmake,不使用jon

解決

  在這裡插入圖片描述

入坑二:編譯uic.exe錯誤程式碼”0xc0000135”

問題

  在這裡插入圖片描述

過程

  有些庫無法呼叫到所以無法啟動,使用cmd檢視一番:
  在這裡插入圖片描述

  在這裡插入圖片描述

  在這裡插入圖片描述

  這些庫本身還依賴了一些,複製過去缺失的繼續cmd會提示,這裡不一一列出了。
  搜尋後得到:
  在這裡插入圖片描述

  在這裡插入圖片描述

  所以,Qt編譯執行環境需要包含OSGeo4W的bin下(可以推斷:對應的庫也可能需要包含OSGeo4W的lib路徑)。

解決

  在這裡插入圖片描述

  這裡直接複製缺少的幾個庫到Qt的bin下(有可能沒列全,請使用cmd自行嘗試),也可以修改環境變數,但是筆者為了不影響整臺電腦的其他環境,不新增系統環境變數。
  在這裡插入圖片描述

相關文章