QGis2.14.4基於Win10+Qt4.8.6+VS2010環境的編譯

做爲關於QGis的第一篇博文,我仍是先簡單介紹下QGis(固然,我默認你們至少應該知道GIS是什麼),比較官方的描述我就直接摘取了wiki上的內容:php

QGIS(原稱Quantum GIS)是一個自由軟件的桌面GIS軟件。它提供數據的顯示、編輯和分析功能。html

聽說在國外QGIs用得比較普遍,在國內的處境很慘,能夠說不少從事地理信息工做的人只知道ArcGis而都不知道這個軟件,這主要是與國情有關。python

因爲QGis是開源軟件,因此個人興趣主要是在開發上面,目前國內這方面的資料很是少,等會我會給你們推薦一個對新手有很大幫助的博客,我也是從那裏學習到QGis的入門知識。在文章最後我也會把整個編譯過程當中對我有所幫助的博文地址放上,給你們作參照。app

通過斷斷續續一週的折騰終於將QGis編譯好了,過程很曲折,編譯完成後也頗有成就感。工具

其實整個編譯過程不是很真複雜,由於有不少工具能夠簡化咱們的操做,可是對於以前沒接觸過的人來講在編譯過程當中會遇到不少問題,就算你一步一步照着網上的流程作,老是會在中途遇到別人沒遇到的問題,開源軟件的編譯我以前就只編譯過gdal,此次編譯QGis真的很不容易,由於編譯它會涉及大大小小的開源庫幾十個...想一想就....,因此我寫這篇博文也不能說徹底照着作就能順利編譯,更多的是想將本身在這個過程當中遇到的問題與你們分析,對你們有一點點幫助。post

 

好,正式開始了。學習

(一)準備工做flex

先把須要的工具軟件準備好,我整理了一下須要單獨準備的只有6個:ui

 

一、VS2010,這個應該沒什麼說的;spa

二、Qt 4.8.6 x86,這個要說下,如今最新版是Qt5.7了,可是官方安裝文檔中仍是不建議使用Qt5,或者說對於這條官方一直未做修改,因此若是不清楚本身該使用Qt4仍是Qt5的就用Qt4吧,省得在開發過程當中出現一些莫名其妙的問題......

三、qgis-latest-ltr.tar.bz2,qgis的源碼,我用的是目前的長期支持版本,就是2.14.4;

四、cmake 3.5.2 x86,我使用的這個版本比其餘推薦的要新,反正在用的時候都正常;

五、osgeo4w,這是個好東西,qgis編譯過程當中須要的開源庫都是用這個下載的;

六、win_flex_bison,flex與bison如今都在同一個包裏,因此只須要下載一個包就好了。

OK,要單獨準備的東西已經好了,能夠先不着急安裝,咱們先把須要的開源庫下載起,由於這個比較費時間。

 

(二)開源庫下載

利用osgeo4w安裝須要的開源庫,選一步一步:

 

到這裏就要開始準備下載了,我也按慣例把庫先列一下,不過你們不用對着手動去找,有更好的辦法:

  • expat
  • fcgi
  • gdal
  • grass
  • gsl-devel
  • iconv
  • pyqt4
  • qt4-devel
  • qwt5-devel-qt4
  • sip
  • spatialite
  • libspatialindex-devel
  • python-qscintilla

 

咱們既然都是編譯的新版本,確定也要用新辦法,直接在osgeo4w中搜索qgis,在Libs中選擇下圖中的兩項,前面對應有版本號,Keep是因爲我已經安裝過了,沒安裝過是Skip,而後在對應的Bin項選擇就好了:

 

而後點下一步,會看到程序將全部須要依賴的開源庫都列出來了(因爲我已經安裝過了,就沒截圖了),因爲下載速度比較慢,在下載的時候還會出現個別下載失敗的,不過沒關係,個別失敗的咱們後面在配置cmake的時候再來補,在等待的時候咱們繼續前面還沒作完的工做。

 

(三)軟件安裝及環境配置

下面的安裝程序除了VS外,其餘的儘可能不要放在有中文與有空格的路徑下。

軟件安裝的過程都差很少,沒什麼特別的地方就不一一說了,環境配置有2個辦法,一是每安裝完一個程序就對應將環境配置好,另外一種辦法就是用批處理文件,在後面會附上。

關於環境配置其實我還有個疑問,我理解的是將全部環節配置好後,在配置CMAKE的時候,文件夾路徑基本上就都能對應上了,可是實際操做中仍是要本身動手一個個的設置,不知道是否是我還漏了什麼環節,可是我仍是建議你們將環境變量都設置好。

一、安裝VS2010;

二、安裝Qt,覈實環境變量是否配置好(我忘了安裝完後會不會自動添加環境變量),沒有的話加個就好了:

 

三、安裝cmake,路徑最好不要有空格,我用的這個不用安裝,解壓就好了;

四、安裝win_flex_bison,路徑最好不要有空格,裝完後應該是這樣

 

五、將qgis-latest-ltr.tar.bz2解壓,並新建一個build文件夾,用來存放編譯文件,dev如今請忽略:

 

六、最後等OSGeo4W都下載完成後,就開始配置環境變量了,本身建立一個*.bat文件,將下面的內容複製進去:

@echo off
set VS10COMNTOOLS = C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86

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:\OSGeo4W
call "%OSGEO4W_ROOT%\bin\o4w_env.bat"
path %PATH%; C:\cmake-3.5.2-win32-x86\bin; C:\win_flex_bison

@set GRASS_PREFIX=c:/OSGeo4W/apps/grass/grass-6.4.4
@set INCLUDE=%INCLUDE%;%OSGEO4W_ROOT%\include
@set LIB=%LIB%;%OSGEO4W_ROOT%\lib;%OSGEO4W_ROOT%\lib

@cmd

其中第二、3行內容就是你VS2010對應的路徑,第五、6也一樣對應你電腦上的路徑,注意v7.0A這個地方要一致,第8行就是你的OSGeo4W路徑,第10行對應你的CMAKE與win_flex_bison的路徑,後面3行都大同小異,保存好後就直接運行,若是有提示找不到路徑的,就是上面某行沒設置好。如今回想起來我設置完在配置時沒識別到,可能和系統權限有關,當時雖然沒提示錯誤,可是我也沒有核實環境變量 - -!!

 

(四)導出VS工程

終於把準備工做都作完了,開始進軍CMAKE了,我以前編譯遇到的問題大部分都在這裏,首先運行程序,並設置源路徑與編譯後路徑:

 

而後點Configure,選擇VS2010:

 

點擊Finish後,會彈出一個錯誤,這個是正常的,咱們仔細看下面的信息,注意這個「flex not found」,咱們前面已經安裝好了,只是沒找到而已:

 

因此咱們只要將flex程序對應的路徑填進去就行了,咱們繼續點Configure,出現的狀況和剛纔同樣,會提示沒找到bison,填進去:

 

繼續Configure,根據錯誤提示與標紅的地方,咱們須要配置GEOS與PROJ的路徑,注意GEOS庫的路徑

 

繼續Configure,設置GDAL:

 

繼續Configure,此次出來的就比較多了,不過咱們對照標紅的地方一個一個的配置,順便說下,在對着下圖若是有找不到的,就從新運行OSGeo4W程序,單獨搜索出來下載:

 

繼續Configure,有細心的觀衆發如今下面信息中會發現如下的錯誤,這些其實不用管,我以前被誤導了,覺得哪裏配置不成功。。。。

 

接着上面繼續,此次有3個表紅的項,可是咱們看下面的提示「Could not find QCA」,因此只須要配置第一個就好了:

 

繼續Configure,又出現了一些問題,是時候要修改WITH內容了:

 

向下拉,找到WITH

 

繼續Configure,離成功還差一步了,此次出現了一個SETUPAPI_LIBRARY錯誤:

 

SETUPAPI_LIBRARY錯誤的解決辦法以下,點擊Add Entry,而後配置內容:

 

如今Configure後,就顯示成功了,到這配置就完成了,若是你們在配置過程當中遇到的問題與我不一致,不要着急,注意下面的錯誤提示,它提示哪一個沒找到你就對應去配置,若是出現上面沒提到的庫,通常與WITH中的配置有關,能夠多嘗試幾回:

 

在Generate以前,還須要改個東西,涉及到咱們最後一步提取開發包的路徑,默認路徑是在C:\Program Files (x86)中,建議修改到其餘路徑下,因爲我用的Win10,在這個路徑下須要權限,我以前提取開發包一直失敗就是這個緣由:

 

如今點Generate,咱們下一個編譯須要的工程文件就所有生成成功了。

 

所須要的工程文件:

 

(五)編譯工程

在VS中加載qgis2.14.4.sln工程,加載完成後共有192個:

 

首先將編譯模式改成RelWithDebInfo,而後在qgis工程上點右鍵,設置爲啓動項:

 

開始編譯,中途正常:

注意:你們在第一次編譯的時候可能會報錯,若是錯誤是在編譯qgis_core工程的qgsunittypes.cpp出現常量中有換行符語法錯誤

 

你們定位過去會看到是由於下面下面兩個符號(分秒)形成的,目前我本身的解決辦法就是在符號兩邊各加一個空格就能經過編譯:

 

編譯完成後在,生成的程序在 build\output\bin\RelWithDebInfo 下,一個基礎的qgis程序就編譯完成了:

 

接下來咱們從新將ALL_BUILD設置爲啓動項,將整個工程都編譯,編譯完後會出現3個錯誤:

咱們如今什麼都不動,而後再編譯下,由於以前已經編譯過,因此會很快,完成後就只剩1個錯誤,這時候編譯就完成了。

 

咱們如今將C:\OSGeo4W\bin目錄下全部的dll都拷貝到qgis.exe所在的目錄,就能夠正常運行了,你們會發現裏面圖標顯示不全,解決辦法是將C:\Qt\4.8.6\plugins\imageformats整個文件夾拷到qgis.exe所在的目錄就行了。

關於圖標問題的詳細信息能夠參照:http://blog.csdn.net/deirjie/article/details/50446033

 

(六)提取開發包

整個工程編譯完了,對於咱們開發使用還有一個步驟,就是提取開發包,將INSTALL設置爲啓動項,而後編譯,就會成功在咱們指定的路徑下生成文件夾,若是這步失敗可能就是我上面提到的路徑問題:

 

整個編譯過程已經完成了,最後來看下:

qgis-2.14.4:是咱們解壓出來的源代碼

build:編譯的工程文件

dev:提取出來的開發包(上一步提取的,改了下文件夾名字)

 

 

編譯完成只是邁出了第一步,對我來講只是個開始,後續我也會繼續將我本身在qgis上學習的一些心得陸續放上。

最後我附上幾個在編譯中對我幫助很大的地址,你們在遇到問題時能夠多參照(其中第一個連接裏還有不少入門教程):

http://blog.csdn.net/deirjie/article/details/48216773

http://blog.csdn.net/liminlu0314/article/details/17400075

http://bbs.qter.org/forum.php?mod=viewthread&tid=3802

http://www.osgeo.cn/post/3805.html

 

最後我把上面用到的工具,及我最後提取出的開發包共享一個,你們須要的能夠下載:

http://pan.baidu.com/s/1nvF8sfZ

相關文章
相關標籤/搜索