【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 节点勾选有关。

 

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