https://blog.csdn.net/octdream/article/details/70332428
https://blog.csdn.net/quinta_2018_01_09/article/details/79084001
https://www.cnblogs.com/xiaojian1987/p/8342104.html
QT官网下载:http://download.qt.io/archive/qt/
我安装的QT 版本是:qt-opensource-windows-x86-msvc2015_64-5.8.0.exe
参考链接: https://blog.csdn.net/lebusini/article/details/79901628
下载并安装以下软件包:
Tool | Website |
---|---|
CMake | https://cmake.org/files/v3.7/cmake-3.7.2-win64-x64.msi |
GNU flex, GNU bison and GIT | http://cygwin.com/setup-x86.exe (32bit) or http://cygwin.com/setup-x86_64.exe (64bit) |
OSGeo4W | http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86.exe (32bit) or http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86_64.exe (64bit) |
ninja | https://github.com/ninja-build/ninja/releases/download/v1.7.2/ninja-win.zip |
OSGeo4W不仅为当前的QGIS发行版提供了准备好的软件包,而且还为每个主机的夜间构建提供了可用的软件包,同时也提供了构建它的大部分依赖关系。如果用户要要编译32位的QGIS请用32位的OSGeo4w下载,如果用户要要编译64位的QGIS请用64位的OSGeo4w。32位的在下载时会下载32位的依赖库,64位的在下载时会下载64位的依赖库。
对于QGIS构建,您需要从cygwin安装以下软件包:
注:
qgis下载地址:https://qgis.org/downloads/
和OSGeo4W(选择Advanced Installation):
下载地址选择这个会快一些:
选择以下组件安装:
这也可以选择上述软件包所依赖的软件包。要注意的是,上述所有的软件包或依赖不能有空格或中文。
要启动具有VC ++和OSGeo4W变量的环境的命令提示符,将创建以下批处理文件(假定上述包安装在默认位置):
set VS140COMNTOOLS = C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
set INCLUDE=%INCLUDE%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include
set LIB=%LIB%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\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%;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin
path %PATH%;C:\Program Files\CMake\bin;C:\cygwin64\bin
@set GRASS_PREFIX=C:/OSGeo4W64/apps/grass/grass-7.4.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
说明:上面的路径要根据自己的实际情况,做适当地改变,特别是我红色标注的地方,做好这一步后面会省去很多事情。(1)VS140COMNTOOLS表示VS15,call后续跟的X64表示64位编译;(2)Include表示头文件,这里加了Win10系统的sdk;Lib表示编译的动态库;(3)Path表示环境变量;(4)特别注意:GRASS_PREFIX的路径地址必须是“/”,Path路径多个;之间不能有空格。
在某个地方创建一个“build”目录。这将是生成所有构建输出的位置。
找到CMake的安装目录,以管理员的方式运行"cmake-gui.exe",然后设置qgis源码包的目录和项目的构建目录:
点击“Configure ”启动配置并选择VisualStudio 14 2015/VisualStudio 14 2015 X64并保留本机编译器,然后单击完成。
“Configure ”过程中,可能会出现配置不正常的项目,如果某个依赖项没有链接到,请手动选择链接目录。我出现的找不到的问题:
1.记得错误后勾选ENABLE_QT5选项,否则将会查找qt4
2.PYRCC_PROGRAM需手动查找,我的对应路径:C:/OSGeo4W64/apps/Python36/Scripts/pyrcc5.bat
3.SPATIALINDEX_LIBRARY需手动查找,我的对应路径:C:/OSGeo4W64/lib/spatialindex-64.lib
4.取消勾选WITH_QWTPOLAR选项,不需要
配置到“Configuring done",然后点击“Generate" 生成VS2015的项目解决方案,直到“Generating done”,然后在项目目录中打开qgis-x.y.z.sln文件。
在使用ALL_BUILD目标构建QGIS之前,将Debug中的解决方案配置更改为RelWithDebInfo(发布调试信息)或Release(否则需要不包括的调试库)。
1、将debug模式改为ReWithdebInfo
2、移除不依赖的项目,保留依赖项目,将qgis设置为启动项
3、优先编译qgis_core,此工程编译通过后,再编译其他的;
4、全部编译后,生成的所有文件在Build->output->bin->RelWithDebInfo目录下
1.找不到
2. error C2001: newline in constant (主要是页面不支持("′")("″")的符号)
解决方法:打开出现warning的文件,Ctrl+A全选,然后在文件菜单:file->advanced save options ,在弹出的选项中选择新的编码方式为:UNICODE codepage 1200 ,点击确定,问题就解决了。
3.编译过程中proj.lib相关报错,将名称换成proj_i.lib即可;
4.error LNK2019 unresolved external symbol WinMain referenced in function xx qgis
解决方法:将qtmain.lib添加到附加依赖库中,如图所示:
5.此时会出现更种丢失dll的问题
解决方法:将两个路径加入到环境变量path中
6.此时打开exe文件仍然崩溃
解决方法:将OSGeo4W64\apps\Qt5\plugins文件下的platforms文件夹拷贝到刚才的目录即可,截图如下:
4、再次启动,成功。
打开项目中的测试数据,效果如下: