QGISコンパイル--- QGIS2.18.18 + Qt5.8.0 + VS2015(X64)+ Python3.6

参照リンク:

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

1.QTをインストールします

QT公式ウェブサイトからダウンロード:http//download.qt.io/archive/qt/

インストールしたQTバージョンは次のとおりです。qt-opensource-windows-x86-msvc2015_64-5.8.0.exe

2.VS2015とQTをインストールします 

参照リンク:https://blog.csdn.net/lebusini/article/details/79901628

3.次のツールソフトウェアをダウンロードしてインストールします

次のパッケージをダウンロードしてインストールします。

ツール ウェブサイト
CMake https://cmake.org/files/v3.7/cmake-3.7.2-win64-x64.msi
GNU flex、GNU bison、GIT http://cygwin.com/setup-x86.exe(32 ビット)または http://cygwin.com/setup-x86_64.exe(64 ビット)
OSGeo4W http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86.exe(32 ビット)または http://download.osgeo.org/osgeo4w/osgeo4w-setup-x86_64.exe(64 ビット)
忍者 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から次のパッケージをインストールする必要があります。

  • バイソン
  • フレックス
  • ギット

注意:

  • Flexとbisonはcygwinからダウンロードできますが、32ビットまたは64ビット、32ビットのダウンロードでは32ビットがダウンロードされ、64ビットのダウンロードでは64ビットがダウンロードされることに注意してくださいインストールアドレスにスペースと中国語を含めないでください。私が提供した次のリンクから直接ダウンロードして解凍することもできます。

  • Gitをダウンロードする必要はありません。これは主にQGISソースコードパッケージをダウンロードするために使用されます。QGISソースコードパッケージをダウンロードするには、公式Webサイトからダウンロードする必要があります。


qgisダウンロードアドレス:https://qgis.org/downloads/

およびOSGeo4W([高度なインストール]を選択):

これを選択すると、ダウンロードアドレスが速くなります。


次のコンポーネントを選択してインストールします。

  • 海外駐在員
  • fcgi
  • gdal
  • grass
  • gsl-devel
  • iconv
  • libspatialindex-devel
  • pyqt5
  • python3-devel
  • python3-qscintilla
  • python3-nose2
  • python3-future
  • python3-pyyaml
  • python3-mock
  • qca-qt5-devel
  • qca-qt5-libs
  • qscintilla-qt5
  • qt5-devel
  • qt5-libs-debug
  • qtwebkit-qt5-devel
  • qtwebkit-qt5-libs-debug
  • qwt-devel-qt5
  • sip-qt5
  • spatialite
  • qjson-dev
  • qjson-libs

这也可以选择上述软件包所依赖的软件包。要注意的是,上述所有的软件包或依赖不能有空格或中文。


4. 使用CMake设置并构建Visual Studio项目

要启动具有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(否则需要不包括的调试库)。

5. 编译QGIS

1、将debug模式改为ReWithdebInfo

2、移除不依赖的项目,保留依赖项目,将qgis设置为启动项

3、优先编译qgis_core,此工程编译通过后,再编译其他的;

4、全部编译后,生成的所有文件在Build->output->bin->RelWithDebInfo目录下


6. 编译问题

1.找不到 <netinet/in.h>,注释掉即可


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、再次启动,成功。

打开项目中的测试数据,效果如下:


おすすめ

転載: blog.csdn.net/lebusini/article/details/79911824