从源码编译QGIS--vs2022+QGIS3.34
1、源码
源码地址QGIS3.34.11
解压到目录:C:\Source\QGIS-final-3_34_11
2、安装vs2022
下载地址 Visual Studio 2022 Community Edition.
选择“使用C++的桌面开发"
3、安装cygwin 64bit
3.1、安装
下载地址:setup-x86_64.exe
根目录:C:\cygwin64
下载站点
3.2、下载包
- bison
- flex
- git(装了也得装)(不理解)
4、安装OSGeo4W
4.1、安装
下载地址:osgeo4w-setup.exe
根目录:C:\OSGeo4W
下载站点
4.2、下载包
- qgis-ltr-deps
5、添加环境变量
在系统中添加环境变量或者在CMakeLists.txt中添加环境变量,效果相同。
5.1在系统中添加环境变量
5.1.1、path变量中添加路径
- C:\cygwin64\bin
- C:\cygwin64\lib
- C:\OSGeo4W\bin
- C:\OSGeo4W\lib
- C:\OSGeo4W\include
- C:\OSGeo4W\apps\Python312
- C:\OSGeo4W\apps\Python312\Scripts
- C:\OSGeo4W\apps\Qt5
- C:\OSGeo4W\apps\Qt5\include
- C:\OSGeo4W\apps\Qt5\bin
- C:\OSGeo4W\apps\Qt5\lib
5.1.2、添加python环境变量
- PYTHONHOME=C:\OSGeo4W\apps\Python312
- PYTHON_PATH=C:\OSGeo4W\apps\Python312;C:\OSGeo4W\apps\Python312\Scripts
5.2、在CMakeLists.txt中设置环境变量
以上环境变量仅仅在编译的时候能用的到,为了避免与系统环境产生冲突,在CMakeLists.txt文件中设置环境变量。
if(WIN32)
set(ENV{Path} "$ENV{Path};C:/cygwin64/bin;C:/cygwin64/lib")
set(ENV{Path} "$ENV{Path};C:/OSGeo4W/bin;C:/OSGeo4W/lib;C:/OSGeo4W/include")
set(ENV{Path} "$ENV{Path};C:/OSGeo4W/apps/Python312;C:/OSGeo4W/apps/Python312/Scripts")
set(ENV{Path} "$ENV{Path};C:/OSGeo4W/apps/Qt5;C:/OSGeo4W/apps/Qt5/include")
set(ENV{Path} "$ENV{Path};C:/OSGeo4W/apps/Qt5/bin;C:/OSGeo4W/apps/Qt5/lib")
set(ENV{PYTHONHOME} "C:/OSGeo4W/apps/Python312")
set(env{PYTHON_PATH} "C:/OSGeo4W/apps/Python312;C:/OSGeo4W/apps/Python312/Scripts")
endif()
6、设置多处理器编译
多处理器编译可加快编译速度,如果电脑性能较好,可以开启多处理器编译。
在CMakeLists.txt文件中添加如下代码即可,一定要在project命令行之后添加。
project(qgis VERSION ${COMPLETE_VERSION})
IF(MSVC)
# This option is to enable the /MP switch for Visual Studio 2005 and above compilers
OPTION(WIN32_USE_MP "Set to ON to build QGIS with the /MP option (Visual Studio 2005 and above)." ON)
MARK_AS_ADVANCED(WIN32_USE_MP)
IF(WIN32_USE_MP)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
ENDIF(WIN32_USE_MP)
ENDIF(MSVC)
7、生成vs2022解决方案
使用vs2022自带的cmake工具生成
使用vs2022打开源码目录
配置为release
cmake 生成器选择为
配置缓存
点击配置缓存,当输出窗口中提示CMake生成完毕后,即可在目录
C:\Source\QGIS-final-3_34_11\out\build\x64-Release
中看到生成的“QGIS.sln"文件。
8、编译
用vs2022打开上一步生成的"qgis.sln"解决方案。点击“生成解决方案”,即可。
9、查看多处理器编译
打开qgis项目属性页,查看是否已经设置“多处理器编译”,其他项目类同。
10、拷贝依赖库
将“C:\cygwin64\bin”、“C:\OSGeo4W\bin”和“C:\OSGeo4W\apps\Qt5\bin”路径下所有dll文件,拷贝到“C:\Source\QGIS-final-3_34_11\out\build\x64-Release\output\bin\RelWithDebInfo”下。
将“C:\OSGeo4W\apps\Qt5\plugins\”目录中的platforms文件夹(含文件夹)拷贝到“C:\Source\QGIS-final-3_34_11\out\build\x64-Release\output\bin\RelWithDebInfo”目录下。
11、启动调试
编译成功后,将“qgis”项目设置为启动项,按“F5”即可启动调试项目。
12、参考资料
官方编译说明
QGIS在Windows下的编译——QGIS3.28.15 + Qt5.15.3 +CMake3.28.0 + VS2022 —64位版本
Qt项目运行失败: no Qt platform plugin cloud be initialized