【QGIS】QGIS 3.12.3 Windows平臺二次開發(二)

環境

系統:win10 x64

QGIS版本:V3.12.3

VS版本:VS2015

 

上一篇:【QGIS】QGIS 3.12.3 Windows平臺二次開發(一)

 

下載QGIS源代碼

下載地址:https://qgis.org/downloads/

qgis各個版本都有,我們下載最新的3.12.3。

 

編輯qgis-build.bat

新建一個文本文件,改名”qgis-build.bat”。使用記事本編輯,將下面的代碼粘貼進去。

@echo off
set VS140COMNTOOLS = C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86

set INCLUDE=%INCLUDE%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include
set LIB=%LIB%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib

set OSGEO4W_ROOT=C:\OSGeo4W

call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
call "%OSGEO4W_ROOT%\bin\qt5_env.bat"

path %PATH%; %PROGRAMFILES%\CMake\bin; c:\cygwin\bin
path %path%;c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

@set GRASS_PREFIX=c:/OSGeo4W/apps/grass/grass-6.4.4
@set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\include
@set LIB=%LIB%;%OSGEO4W_ROOT%\lib;%OSGEO4W_ROOT%\lib

set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\apps\Qt5\include;%OSGEO4W_ROOT%\include
set LIB=%LIB%;%OSGEO4W_ROOT%\apps\Qt5\lib;%OSGEO4W_ROOT%\lib

@cmd

 

啓動cmake配置與生成

1、打開cmd.exe,執行qgis-build.bat批處理文件。這個路徑是我存放qgis-build.bat的位置,可以與前面下載的安裝軟件放在同一路徑。

D:\TOOLS\工作軟件\QGIS\qgis-build.bat

 

2、執行以下命令,啓動cmake。

"C:\Program Files (x86)\CMake\bin\cmake-gui.exe"

 

3、啓動cmake。

①、點擊 Browse Source... 按鈕配置qgis的源代碼路徑。

②、點擊 Browse Build... 按鈕配置build輸出路徑。

③、然後勾選 Grouped

 

4、在cmake UI界面點擊 Configure 按鈕,彈出以下配置對話框。

①、指定爲生成工程的VS版本,這裏是VS2015。

②、指定編譯器,這裏是 default(默認)。

 

③、點擊 Finish 按鈕後,cmake開始配置。

 

5、一般情況下,第一次配置都是 失敗 的。

配置通不過至少有兩個原因:

a、osgeo4w下載的依賴庫缺失。 
b、qgis-build.bat配置文件命令還有問題。


配置錯誤信息如下。

CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.15/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find LibZip (missing: LIBZIP_LIBRARY LIBZIP_INCLUDE_DIR
  LIBZIP_CONF_INCLUDE_DIR)
Call Stack (most recent call first):
  C:/Program Files (x86)/CMake/share/cmake-3.15/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
  cmake/FindLibZip.cmake:39 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  CMakeLists.txt:341 (FIND_PACKAGE)

錯誤信息: Could NOT find LibZip(找不到LibZip依賴庫)。

解決方法:使用osgeo4w下載 LibZip,下載方式如前所述。

 

6、重新調整配置 WITH 節點。

這裏只保留了四個:

WITH_ANALYSIS
WITH_GUI
WITH_DESKTOP
WITH_INTERNAL_MDAL

 

6、Configure 成功。

調試信息輸出。

Selecting Windows SDK version 10.0.14393.0 to target Windows 10.0.18363.
QGIS version: 3.12.3 București (31203)
Could NOT find OpenCL (missing: OpenCL_LIBRARY OpenCL_INCLUDE_DIR) 
Couldn't find OpenCL: support DISABLED
Found Proj: C:/OSGeo4W/lib/proj_i.lib version 6 (6.3.2)
Found GEOS: C:/OSGeo4W/lib/geos_c.lib (3.8.1)
Found GDAL: C:/OSGeo4W/lib/gdal_i.lib (3.0.4)
Found Expat: C:/OSGeo4W/lib/libexpat.lib
Found Spatialindex: C:/OSGeo4W/lib/spatialindex_i.lib
Found Qwt: C:/OSGeo4W/apps/Qt5/lib/qwt.lib (6.1.3)
Found libzip: C:/OSGeo4W/lib/zip.lib
Found Sqlite3: C:/OSGeo4W/lib/sqlite3_i.lib
Found SpatiaLite: C:/OSGeo4W/lib/spatialite_i.lib
Qt WebKit support DISABLED.
Found Qt version: 5.11.2
Found QScintilla2: C:/OSGeo4W/apps/Qt5/lib/qscintilla2_qt5.lib (2.10.8)
Found QtKeychain: C:/OSGeo4W/apps/Qt5/lib/qt5keychain.lib
Found QCA: C:/OSGeo4W/apps/Qt5/lib/qca-qt5.lib (2.1.3)
Pedantic compiler settings enabled
F
atal Python error: initfsencoding: unable to load the file system codec
  File "d:\Developer\QGIS\OSGeo4W\apps\Python27\lib\encodings\__init__.py", line 123
    raise CodecRegistryError,\
                  
          
^
SyntaxError: invalid syntax

Current thread 0x
00001908 (most recent call first):

txt2tags not found - disabled
Found exiv2: C:/OSGeo4W/lib/exiv2.lib
Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE) 
Using PROJ 6 srs database.
Ctest Binary Directory set to: D:/Work/AIS/Radar/Base/qgis-3.12.3-build/output/bin
Configuring done

Ungrouped Entries節點

 

CMAKE、ENABLE、EXIV2、EXPAT、GDAL、GEOS、GRASS、HDF5、NETCDF、POSTGRES、PROJ、QCA節點

 

 

QGIS、QSCINTILLA、QT、QTKEYCHAIN、QWT、SPATIALINDEX、SPATIALITE、SQLITE3節點

 

7、Generate 成功。

 

 

qgis-3.12.3-build 文件夾,如下圖所示。

 

使用VS2015打開 qgis.sln 解決方案,如下圖所示。總共350個工程,工程數量應該與 WITH 節點勾選有關。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章