环境
系统: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 节点勾选有关。