前言
在之前,我编译了一个3.28版本的,但是Python模块出现了问题,导致用不了Python插件。真是无语,就当给开发者当实验小白鼠了。
在这之后,我又编译了3.32版本,还是出现了一样的问题。
于是,我直接选择了最多人编译的3.16,妈呀,真香,直接成功!
但是我编译出来的版本,在加载分隔文本图层后,选择渐进颜色带时,它内置的几条色带全部是一个颜色。。。然后换了3.18版本,一切正常!应粉丝的请求,写一下3.18版本的编译过程。
环境
VS2017 Community、Cmake 3.26.3、Cygwin64 2.925、OSGeo4W
下载OSGeo4W
「osgeo4w-setup-x86_64.exe」https://www.aliyundrive.com/s/REqW82JrFDu
提取码: q6i0
下载完成后打开,选择高级安装
选择武汉大学的安装源
武汉大学OSGeo4W安装源
然后搜索qgis,把凡是qgis3.18版本的全部选择
选择zstd
然后点击下一步即可,同时会把开发的依赖环境一起安装。
安装完成的目录如下,红色箭头指向的部分刚安装完是没有的。
下载Cygwin64
下载地址:https://www.cygwin.com/setup-x86_64.exe
下载完打开,搜索bison和flex,安装即可。
安装Cmake
下载地址:https://cmake.org/download/
下载完毕安装即可。
下载QGIS3.18.3源码
我用夸克网盘分享了「qgis-3.18.3.tar.bz2」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:https://pan.quark.cn/s/82ec5dc5ad50
下载完解压,我解压到了OSGeo4W的根目录。
创建批处理命令
新建一个bat文件,我的是创建在了OSGeo4W的安装目录下,我起的名字是build.bat
写入以下内容,记得把对应路径改成自己的。
@echo off
REM VCSDK
set VCSDK=10.0.17763.0
set OSGEO4W_ROOT=D:\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%
call "D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
path %path%;D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin
path %PATH%;C:\Program Files\CMake\bin;C:\cygwin64\bin
@set GRASS_PREFIX7=D:/OSGeo4W64/apps/grass/grass78
set GRASS7=
if exist %OSGEO4W_ROOT%\bin\grass74.bat set GRASS7=%OSGEO4W_ROOT%\bin\grass74.bat
if exist %OSGEO4W_ROOT%\bin\grass76.bat set GRASS7=%OSGEO4W_ROOT%\bin\grass76.bat
if exist %OSGEO4W_ROOT%\bin\grass78.bat set GRASS7=%OSGEO4W_ROOT%\bin\grass78.bat
if "%GRASS7%"=="" (echo GRASS7 not found & goto error)
@set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\include
@set LIB=%LIB%;%OSGEO4W_ROOT%\lib;%OSGEO4W_ROOT%\lib
REM OSGeo4W_2的安装路径
set LIB=%LIB%;%OSGEO4W_ROOT%\apps\Qt5\lib;%OSGEO4W_ROOT%\lib
set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\apps\Qt5\include;%OSGEO4W_ROOT%\include
REM call "D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\ devenv.exe"
@cmd
然后保存,双击这个bat文件运行,运行后输入cmake-gui打开cmake。
使用Cmake生成项目
输入cmake-gui后,会自动打开Cmake窗口。第一行输入源码的解压位置,第二行输入项目编译输出的位置。然后点击Configure,选择x64。没问题的会提示Configuring done,有问题需要对应地进行修改(可以私信我解决)。Configuring done后,把上面的ENABLE_TESTS取消勾选,如果不想要Python模块,把下面的WITH_BINDINGS也取消勾选了。很多处理工具依赖Python,这个不建议取消。
然后每次修改配置后,需要再次点击Configure,Configuring done没问题后,点击Generate,出现Generating done就成功了,然后点击Open Project,会自动调用VS2017,打开build目录的QGIS 3.18.3项目。
使用VS编译项目
打开项目后,把Debug环境切换为Release,然后按照qgis_core,qgis_analysis,qgis_app,qgis_gui,ALL_BUILD的顺序依次生成项目。
做完这些之后,把qgis项目设置为启动项目。
然后点击本地调试即可。
后续说明
项目关闭之后,不能直接用VS打开,因为很多环境变量没有配置,项目会运行不起来。
一种正确做法是,双击创建的build.bat文件,然后按照同样的步骤打开cmake-gui,在cmake中打开项目
(不需要再点击Configure和Generate)。
第二种办法是,在build-3.18.3\output\bin\Release目录下创建一个新的bat文件,我起的名字是Build_Run.bat,填入如下内容,记得修改为自己的路径。
@echo off
REM build.bat文件路径
call D:\OSGeo4W64\build.bat
REM gdal环境配置文件的路径
call D:\OSGeo4W64\bin\gdal-dev-env.bat
@cmd
双击这个Build_Run.bat,然后输入文章来源:https://uudwc.com/A/2010V
start devenv
在打开的VS窗口中,选择我们的qgis项目即可。
如果我们想不打开VS直接运行我们编译出来的qgis怎么办,也很简单,还是双击上面创建的Build_Run.bat
然后输入start qgis即可。
方便起见,可以把这个Build_Run.bat发送到桌面,就可以在桌面运行这个Build_Run.bat文件啦。文章来源地址https://uudwc.com/A/2010V