目录
(2)终端中启动E:\QtPro\qgis-latest-ltr\qgis-3.10.12\ms-windows\osgeo4w\msvc-env.bat脚本配置临时环境变量
(2)先编译qgis_core、qgis_native,再编译其它的;如果编译时找不到某个依赖库,则先编译依赖库即可。
1.简介
GIS(地理信息系统)在大学是有相关专业:地理信息科学专业,是一个很高端,需要各种技术结合的交叉学科,按定义来说,地理信息科学是研究地理信息采集、分析、存储、显示、管理、传播与应用,以及地理信息传输和转化规律的一门科学。
我不是GIS专业,这里我们讨论的只是GIS应用层上的一类计算机软件,现在比较好的开源软件,web端的有OpenLayers和Leaflet,client的是QGIS,当然web端的也可以配合Qt的Qt WebEngine模块做成客户端的形式。这里我们主要介绍通过QGIS源码进行编译和运行。
OpenLayers官网:https://openlayers.org/
Leaflet官网:https://leafletjs.com/
QGIS官网:https://www.qgis.org/en/site/
OSGeo(开源空间信息基金会)官网:https://www.osgeo.org/
OSGeo中国:https://www.osgeo.cn/
2.依赖环境搭建
在QGIS的官网下载源码,如下图位置:
下载完成后,解压后在目录中找到INSTALL文件,这里面介绍了QGIS在各种系统中的编译方式,我这里选择了3.10.12版本,在windows系统下进行编译。
打开INSTALL文件, 可以看到4.1介绍的即是在windows中用vs2015编译的详细步骤,如下图所示:
大体分为3步:
(1)安装vs2015
(2)安装其它工具和依赖项
包括CMake、cygwin、OSGeo4w、ninja,注意区分版本,如果想要编译64位的QGIS建议都选择x86_64的安装包,还有安装的时候尽量选择默认路径,否则后续需要修改设置环境的脚本文件。
对于QGIS构建,您需要从cygwin安装以下软件包:bison、flex、git(可以不安装);
从OSGeo4W(选择高级安装):qgis-ltr-deps;这个软件可以下载空间信息的开源软件,如果缺少某个库,就可以在这里面搜索下载;可能网速比较慢,导致超时失败,这时我们可以添加下载源,武汉大学下载源(http://gwmodel.whu.edu.cn/mirrors/osgeo4w)。所有操作步骤如下:
(3)拷贝ninja.exe 到 D:\OSGeo4W64\bin\目录下;
3.cmake-gui生成sln工程文件
(1)在源码解压目录下新建build文件夹:
(2)终端中启动E:\QtPro\qgis-latest-ltr\qgis-3.10.12\ms-windows\osgeo4w\msvc-env.bat脚本配置临时环境变量
添加系统变量OSGEO4W_ROOT:
因为我在安装OSGeo4w时,将安装目录改为D盘了,而该脚本中用到了该系统变量,如果你安装某个依赖时没有选择默认路径,而该脚本中用到了相关路径,则都需要在脚本中进行修改,最终修改如下:
@echo off
REM ***************************************************************************
REM msvc-env.cmd
REM ---------------------
REM begin : June 2018
REM copyright : (C) 2018 by Juergen E. Fischer
REM email : jef at norbit dot de
REM ***************************************************************************
REM * *
REM * This program is free software; you can redistribute it and/or modify *
REM * it under the terms of the GNU General Public License as published by *
REM * the Free Software Foundation; either version 2 of the License, or *
REM * (at your option) any later version. *
REM * *
REM ***************************************************************************
set ARCH=%1
if not "%ARCH%"=="x86" if not "%ARCH%"=="x86_64" (
goto usage
)
if "%OSGEO4W_ROOT%"=="" (
if "%ARCH%"=="x86" (
set OSGEO4W_ROOT=C:\OSGeo4W
set VCARCH=x86
) else (
set OSGEO4W_ROOT=C:\OSGeo4W64
set VCARCH=amd64
)
)
if not exist "%OSGEO4W_ROOT%\bin\o4w_env.bat" (echo o4w_env.bat not found & goto error)
call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
call "%OSGEO4W_ROOT%\bin\py3_env.bat"
call "%OSGEO4W_ROOT%\bin\qt5_env.bat"
if not "%PROGRAMFILES(X86)%"=="" set PF86=%PROGRAMFILES(X86)%
if "%PF86%"=="" set PF86=%PROGRAMFILES%
if "%PF86%"=="" (echo PROGRAMFILES not set & goto error)
set PF86=D:\Program Files (x86)
set VS140COMNTOOLS=%PF86%\Microsoft Visual Studio 14.0\Common7\Tools\
call "%PF86%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %VCARCH%
path %path%;%PF86%\Microsoft Visual Studio 14.0\VC\bin
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)
for /f "usebackq tokens=1" %%a in (`%GRASS7% --config path`) do set GRASS_PREFIX=%%a
set PYTHONPATH=D:\OSGeo4W64\apps\Python37\python.exe
if exist "%PROGRAMFILES%\CMake\bin" path %PATH%;%PROGRAMFILES%\CMake\bin
if exist "%PF86%\CMake\bin" path %PATH%;%PF86%\CMake\bin
if exist D:\cygwin64\bin path %PATH%;D:\cygwin64\bin
if exist c:\cygwin\bin path %PATH%;c:\cygwin\bin
path
set LIB=%LIB%;%OSGEO4W_ROOT%\apps\Qt5\lib;%OSGEO4W_ROOT%\lib
set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\apps\Qt5\include;%OSGEO4W_ROOT%\include
goto end
:usage
echo usage: %0 arch
echo sample: %0 x86_64
exit /b 1
:error
echo ENV ERROR %ERRORLEVEL%: %DATE% %TIME%
exit /b 1
:end
在终端中运行脚本,并跳转到cmake安装路径中启动cmake-gui,如下:
(3)cmake-gui配置依赖项
(4)分别点击配置、生成、打开工程
4.编译
(1)新建x64解决方案
在打开的工程中选择Release/x64,如果打开后只有32位的,需要新建x64解决方案,选择从win32复制,如下:
创建后,因为是从win32复制过来的,需要修改配置,将如下两处位置改为x64:
(2)先编译qgis_core、qgis_native,再编译其它的;如果编译时找不到某个依赖库,则先编译依赖库即可。
5.运行
将编译后的库拷贝到qgis运行目录,将工程中的qgis设置为启动项,即可运行:
拷贝后的目录:
运行:
默认是英文版本,要改为中文版本需要在设置->选项->通用中将用户界面翻译改为简体中文,如下:
如果简体中文不可选,需要E:\QtPro\qgis-latest-ltr\build\output中的i18n(国际化缩写)目录拷贝到qgis运行目录,如下图: