本文参考了以下这篇博文并在之基础上进行了部分错误的更正
VS2019 QGIS3.24.2源码编译详解-wenwenJingyi
源码下载和环境下载
请参考上面文文章
环境配置
- 启动x64 Native Tools Command Prompt for VS 2019命令行工具,逐条执行以下8条语句,或者将所有命令放在一个bat文件中统一执行,其中OSGeo4W软件的路径根据具体安装路径进行修改:
set OSGEO4W_ROOT=C:\Apps\OSGeo4W
call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
path %PATH%;C:\Apps\cygwin64\bin
set O4W_ROOT=%OSGEO4W_ROOT:\=/%
set LIB_DIR=%O4W_ROOT%
set GRASS_PREFIX=%OSGEO4W_ROOT%/apps/grass/grass80
set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\include
set LIB=%LIB%;%OSGEO4W_ROOT%\lib
- 不要关闭命令行,在命令行中启动cmake-gui.exe(这一步比较关键,为了让cmake工具能读取到之前设置的环境变量)。CMake中选择源代码路径和生成项目工程生成路径,按实际第三方库设置部分选项,如GDAL等。
编译
在Visual Studio 2019中,将debug模式改为ReWithdebInfo;设置qgis为启动项,按照qgis_core、qgis_gui、qgis_app、qgis、all_build的顺序依次编译,编译后在对应的RelWithDebInfo 目录下会生成相应的dll与exe
启动
启动qgis.exe时可能会报qgis_app.dll无法加载或找不到的问题,而该dll又在该目录下。
原因是调用qgis_app.dll时所依赖的其他dll未加载。
解决方法 :将OSGeo4W\bin下的dll以及OSGeo4W\apps\Qt5\bin下的dll拷贝到qgis.exe所在目录即可。
上面的问题解决后,再启动时可能会报如下错误:
解决方法:将 OSGeo4W\apps\Qt5下的plugins文件夹拷贝到qgis.exe所在目录即可。