環境
系統: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 節點勾選有關。