- 版本
- 首次编译说明
- 注意事项
QGis 3.24.3 VS2017 CMake 3.23首次编译说明
- 编译前准备
参照git上的编译说明,准备需要的第三方依赖库。
https://github.com/qgis/QGIS/blob/master/INSTALL.md
注:OSGeo4W下载的protobuf模块是用vs2019编译,与本次开发工具VS2017工具集不匹配,需要使用VS2017重新编译,然后替换到OSGeo4W中的相应位置。 - 添加qgis-dev.bat脚本信息,根据自己电脑的文件位置,修改配置文件,主要有:
- WinKits路径
- VS路径
- OSGeo4W路径
- cygwin64路径
- CMake安装路径
@echo off set VS150COMNTOOLS = "C:Program Files (x86)Microsoft Visual Studio2017CommunityCommon7Tools" call "C:Program Files (x86)Microsoft Visual Studio2017CommunityVCAuxiliaryBuildvcvarsall.bat" x64 set INCLUDE=%INCLUDE%;C:Program Files (x86)Windows Kits10Include set LIB=%LIB%;C:Program Files (x86)Windows Kits10Lib set OSGEO4W_ROOT=D:work 2_3DTool 7_QGisQGis3.24.3GitOSGeo4W64 call "%OSGEO4W_ROOT%bino4w_env.bat" set O4W_ROOT=%OSGEO4W_ROOT:=/% set LIB_DIR=%O4W_ROOT% path %path%;C:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023bin path %PATH%;C:Program FilesCMakebin;D:work 2_3DTool 7_QGisQGis3.24.3Gitcygwin64bin @set GRASS_PREFIX=D:work 2_3DTool 7_QGisQGis3.24.3GitOSGeo4W64appsgrassgrass80 @set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%include @set LIB=%LIB%;%OSGEO4W_ROOT%lib;%OSGEO4W_ROOT%lib set LIB=%LIB%;%OSGEO4W_ROOT%appsQt5lib;%OSGEO4W_ROOT%lib set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%appsQt5include;%OSGEO4W_ROOT%include ::c: ::cd C:Program Files (x86)Microsoft Visual Studio2017CommunityCommon7IDE ::devenv.exe @cmd
-
控制台执行qgis-dev.bat脚本,成功后cmake-gui回车,打开cmake。
-
配置cmake。
-
修改cmake参数。
-
点击Open Project,打开VS2017。
-
QGis核心模块:
qgis、qgis_app、qgis_core、qgis_gui、qgis_analysis、qgispython、libdxfrx、qgis_native、 ZERO_CHECK 各模块之间的依赖关系在各子项目中查看。
其余均为非必须模块,可在工程中移除不编译,但启动QGis程序会提示部分插件缺失。 -
将qgis子项目设为启动项,编译必须模块后,VS设置RelWithDebInfo调试启动即可。
-
项目全部编译约耗时1.5小时,可设置子项目 -> 属性 -> C/C++ -> 常规 -> 多处理器编译加快编译时间。
-
后续启动VS编译方法:
取消qgis-dev.bat脚本中的最后三句注释,运行脚本。(需先设置QGis第三方依赖环境 路径再启动VS,否则编译时可能会因依赖环境出现未知错误)
-
qgis.exe打包相关依赖dll无需放在exe同目录,exe同目录添加环境路径配置文件qgis.env。路径为qgis.exe的相对路径。
配置文件解析如下:
4. 若修改/添加ui中控件显示名称,还需修改对应翻译文件。路径:./QGis3.24.3/i18n.
qgis_zh-Hans.ts:中文简体
记事本打开,找到修改的控件位置,修改/添加message节点。
重新编译translations子项目。



