这几天一直在搞QGIS的编译,刚开始想要编译的是QGIS3.12.1版本,对照着在网上找到的安装步骤一步一步的安装并且反复的试,很可惜都没有成功。后来怀疑是不是QGIS版本的原因,所以就换了一个低的版本QGIS-3.10.4,也是一个长期版本,再按照安装步骤进行安装仍然没有成功。看见别人的能安装成功而自己的电脑安装不成功,换电脑的想法都有了(...),不过几天的努力还是没有白费成功编译了QGIS-3.10.4版本,现在想想没有编译成功的原因主要是QGIS版本更新快,我用的编译步骤都是2.x与3.5左右的,与QGIS3.10版本编译步骤还是有差别的,下面就是编译步骤了。
- 一、下载所需要软件
1.安装VS2015(x64)
安装包在网上很容易找到。
2.安装CMake、cygwin、OSGeo4W与ninja
安装包可以在QGIS官网找到,也可以直接点击这,如下。我下载的都是64位的。
CMake、cygwin、OSGeo4W下载后直接安装没有什么注意的地方,ninja后面会用到。
3.下载源码
可以在Github上下载
- 二、依赖库下载
1.cygwin
上面这一步如果没有下载地址可以看我上一篇博客尾部
接下来就是打勾下一步就行了。
2.OSGeo4W
上面这一步是输入qgis-dev-deps ,其他的都不要,如果以前安装过QGIS最好要换一个安装目录,因为msinttypes中的头文件可能与VS2015中的文件件冲突,官方原话是这样的
接下来把源码文件夹解压出来如下图,我是把文件都放在D:\QGIS目录下了,这个是可以自定义的。把ninj解压出来的EXE文件放入D:\QGIS\OSGeo4W64\bin目录中。
- 三、编译
1.在D:\QGIS目录下创建一个TXT文件,把下面内容复制进去保存成bat后缀的文件commend.bat。
@echo off
set VS140COMNTOOLS = D:\VS2015\Common7\Tools\
call "D:\VS2015\VC\vcvarsall.bat" x64
set INCLUDE=%INCLUDE%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
set LIB=%LIB%;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib
set OSGEO4W_ROOT=D:\QGIS\OSGeo4W64
call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
call "%OSGEO4W_ROOT%\bin\py3_env.bat"
call "%OSGEO4W_ROOT%\bin\qt5_env.bat"
set O4W_ROOT=%OSGEO4W_ROOT:\=/%
set LIB_DIR=%O4W_ROOT%
path %path%;D:\VS2015\VC\bin
path %PATH%;D:\QGIS\CMake\bin;D:\QGIS\cygwin64\bin
@set GRASS_PREFIX=D:\QGIS\OSGeo4W64\apps\grass\grass78
@set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\include
@set LIB=%LIB%;%OSGEO4W_ROOT%\lib;%OSGEO4W_ROOT%\lib
set LIB=%LIB%;%OSGEO4W_ROOT%\apps\Qt5\lib;%OSGEO4W_ROOT%\lib
set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\apps\Qt5\include;%OSGEO4W_ROOT%\include
@cmd
上面的路径改成自己的路径。
2.camke编译
在D:\QGIS目录下按住shift键不放,右击鼠标选择 “在此处打开power shell 窗口(s)” ,输入下面命令进入cmake窗口。
点击Configure后可能会出现一些错误,找到相应的路径添加上去就行了,下面是我的路径。
点击Open Project后会打开VS2015,打开后出现的工程项目比较多,如果只要基本功能的话,可以只保留下面几项,如果后期需要再加上。
右键qgis工程,选择”设为启动项目“,然后右键ALL_BULID“生成”。
在编译过程中会出现一些错误与警告,可以参考这个百度文库尾部。
- 四、”生成“后运行就会出现下面结果。