1、环境
win10 操作系统;
win10 sdk;
2、工具准备
IDE:vs2015,可用社区免费版(community);
cygwin:在 windows 系统上提供的类 unix 环境,用于下载所需要的包。64位下载;
OSGeo4W:用于 windows 系统里一系列的开源 gis 的发布,64位下载;
其中,cygwin,需安装以下的包:
- bison
- flex
- git
OSGeo4W,需安装:
- qgis-dev-deps
qgis-dev-deps 中,已包含了 qgis 所需要的一系列依赖。同时确保不要安装 msinttypes 包,因其 stdint.h 和 vs 自有的会冲突。
3、安装
vs 和 cmake 比较简单。
cygwin 也一步步安装,直至选择包的界面,分别搜索需以上的包,若未安装,会显示 skip,点击切换版本即可;下图为已安装,显示为 keep。
OSGeo4W 选择 Advanced Install,安装路径假设默认为 C:\OSGeo4W64,之后一步步安装,直至选择包界面,输入 qgis-dev-deps,同样,若未安装,会显示为 skip,点击切换版本即可,下图为已安装,显示为 keep。
4、配置
- 环境
以下保存为批处理文件 C:\OSGeo4W64\qgis-dev.bat,其中具体的路径,替换成自己机子环境对应的路径,其中的路径包括 vs 、window sdk、OSGeo、cygwin64等。
@echo off
set VS140COMNTOOLS = D:\Go\Program\Microsoft Visual Studio 14.0
call "D:\Go\Program\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64
set INCLUDE=%INCLUDE%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include
set LIB=%LIB%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib
set OSGEO4W_ROOT=C:\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:\Go\Program\Microsoft Visual Studio 14.0\VC\bin
path %PATH%;D:\Go\Program\CMake\bin;E:\ProgramFiles\cygwin64\bin
@set GRASS_PREFIX=C:\OSGeo4W64\apps/grass/grass-7.6.0
@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
-
cmake
双击以上保存的 qgis-dev.bat,输入 cmake-gui,会弹出 cmake 的配置界面,写好 qgis 源码目录及build 目录,
image.png
点击 configure,在弹出的界面选择与自己机子匹配的 vs 版本,过程中若有错,搜索一下很容易解决。
image.png
成功后点击 generate,完成后点击 Open Project,会调用 vs 打开项目文件(注:此时 vs 的环境变量继承命令框)。
5、 编译
打开后,项目非常多,无论是编译、还是浏览,都非常慢。我们只需核心的几个库,其它的都移除。先把主程序运行起来,其它的插件若有需要再添加。
sln.png
- qgis:QGIS可执行程序
- qgis_native:依赖项
- libdxfrw:依赖项
- qgis_app:
- qgis_analysis:依赖项
- qgis_core:依赖项,QGIS核心库
- qgis_gui:依赖项,QGIS核心库
- ui:QGIS所有的界面
- gdalprovider:读取栅格数据驱动
- ogrprovider:读取矢量数据驱动
- version:版本
由于源代码为 utf-8 编码,本机 locale 为中文,编译时可能出现 ”Newline in constant“ 的错误,需显示告诉编译器源码为 utf-8 :
右键-Properties-- c/c++,Command Line,Addtional Options 里添加:
/source-charset:utf-8
编译选项选择“RelWithDebInfo”,进行编译。由于源码比较多,先编译 core、native。总体耗时比较久,可能30分钟以上。
6、运行
build 完成后,输出在 C:\OSGeo4W64\QGIS\build\output\bin\RelWithDebInfo,如图:
qgis 依赖比较多,可通过设置环境变量的方式来运行。以下内容保存为 qgis.bat。
@echo off
set OSGEO4W_ROOT=C:\OSGeo4W64
call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
call "%OSGEO4W_ROOT%\bin\py3_env.bat"
call "%OSGEO4W_ROOT%\bin\qt5_env.bat"
start qgis
双击运行 qgis.bat:
开发版启动界面
qgis主界面
参考资料:
qgis install
qgis 编译
李民錄 qgis 编译
网友评论