1. 程式人生 > >QGIS 2.14編譯終極教程 (QGIS 2.14.16 && Qt-4.8.6 && VS2010 )

QGIS 2.14編譯終極教程 (QGIS 2.14.16 && Qt-4.8.6 && VS2010 )

編譯前須知(有必要的幾句囉嗦)

1、莫被這個教程的篇幅嚇到,其實篇幅不大。就算大家覺得太囉嗦,請見諒,筆者寫教程就是喜歡詳細,喜歡面面俱到。再者,本教程是為了解答很多人編譯QGIS遇到的頭疼問題,雖然可能離一解破萬疑還差好遠,但是總要盡力邁出這一步。
2、教程對版本的要求近乎苛刻,原因很簡單,筆者(小木君)編譯了N次QGIS,發現QGIS的依賴項很多,而對於某個特定依賴項,其版本嚴重影響該依賴項與其它依賴項的相容。本教程使用的版本參見下面第3點介紹。如果版本不匹配,例如非2.14版本的QGIS,鑑於筆者沒有親身嘗試過,不敢憑空捏造,因此恕不能幫上忙。
3、本教程編譯QGIS的主要軟體環境介紹:
1)Windows 7 64位 旗艦版
2)Visual Studio 2010 旗艦版
3)Qt-4.8.6 32位
4)Cmake-3.4.3 32位
5)Cygwin 32位
6)OSGeo4W 32位
7)QGIS-2.14.16.7z (待編譯的原始碼)
4、關於32位和64位的選擇:
這裡,32位和64位指的是Visual Studio 2010、Qt、Cmake、Cygwin 、OSGeo4W 等軟體的版本(windows 7系統的版本沒關係,32位或64位皆可),編譯QGIS前,上述軟體的版本必須保持一致,否則會存在相容性問題。筆者嘗試過64位的編譯,然而由於筆者使用的Qt 4.8.6是32位的軟體等原因,編譯失敗,因此筆者最終選擇32位,編譯成功。
5、QGIS編譯不難,但也不是很簡單。大家按照下面的步驟都能編譯成功。如有任何疑問,歡迎在下方留言或關注筆者的部落格,暱稱“木之野火”,ID“m0_37287361”

編譯過程

1、軟體下載:
1)Windows 7 64位 旗艦版(32位也可)、Visual Studio 2010 旗艦版的安裝非常基礎,在此不再介紹;
2)Qt-4.8.6 32位
下載地址(筆者已將可用軟體上傳至百度網盤):
連結:https://pan.baidu.com/s/1AsKPSzc9vczclANBaSLr1g 密碼:76yy
下載完成後安裝,安裝位置自定,筆者直接安裝在C盤根目錄,在系統變數Path裡新增: C:\Qt\4.8.6;C:\Qt\4.8.6\bin;
3)Cmake-3.4.3 32位
下載地址(筆者已將可用軟體上傳至百度網盤):
連結:https://pan.baidu.com/s/1ASeASZcxVhC2vfQhmRkLOA

密碼:e1tl
下載完成後安裝,安裝位置自定,筆者安裝在D盤。安裝過程中有關於是否將cmake/bin新增到環境變數的提示,選擇確認即可
4)Cygwin 32位
下載地址:https://cygwin.com/install.html
在這裡插入圖片描述
下載32位的exe安裝程式後,安裝過程參見下面 “2、依賴庫下載” 部分
5)OSGeo4W 32位
下載地址:http://trac.osgeo.org/osgeo4w/
在這裡插入圖片描述
下載exe安裝程式後,安裝過程參見下面 “2、依賴庫下載” 部分
6)QGIS-2.14.16.7z 原始碼
下載地址:https://download.csdn.net/download/yuanhengzhw/9907352

下載後解壓到非中文、無空格路徑
2、依賴庫下載:
這部分的依賴庫下載主要是指利用前面已經下載好的Cygwin和OSGeo4W,下載編譯 QGIS所需的依賴庫,下載依賴庫的過程實際就是安裝Cygwin和OSGeo4W的過程。
1)安裝Cygwin的同時下載flex、bison、git,按以下順序即可完成
在這裡插入圖片描述

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
進行到上述最後的圖片所示位置時,在搜尋欄中依次搜尋flex、bison、git,滑鼠點選將Default改為Install;當上面3個依賴項都選擇完畢後,點選下一步開始安裝,安裝的依賴項可以多裝,不可少裝。
2)安裝OSGeo4W的同時下載以下依賴項:
expat、fcgi、gdal、grass、gsl-devel、iconv、pyqt4 、qt4-devel、qwt5-devel-qt4、sip、spatialite、libspatialindex-devel、qscintilla、python-qscintilla、python、geos、proj、qca
流程圖如下:
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
進行到上述最後的圖片所示位置時,在搜尋欄中依次搜尋上述依賴項,滑鼠點選將Default改為Install;所有依賴項選擇完畢後,點選下一步開始安裝,安裝的依賴項可以多裝,不可少裝。
2、配置環境變數:
完成依賴庫的下載後,接下來進行環境變數的配置。由於編譯QGIS所需的依賴庫已經通過Cygwin和OSGeo4W下載,故只需配置Cygwin和OSGeo4W的環境變數即可。在系統變數Path裡新增: C:\cygwin;C:\cygwin\bin;C:\cygwin\lib;C:
OSGeo4W;C:\OSGeo4W\bin;C:\OSGeo4W\include;C:\OSGeo4W\lib;
配置完成後,啟動命令列,輸入:echo %path% 回車即可使得配置的環境變數立即生效,而不用登出或重啟。
3、Cmake配置與構建:
1)開啟安裝好的Cmake工具,“Where is the source code”一欄選擇上述解壓QGIS-2.14.16.7z得到的資料夾,“Where to build the binaries”一欄選擇生成vs工程的目標路徑,如圖所示:
在這裡插入圖片描述
2)點選“configure”,在彈出對話方塊選擇“Visual Studio 10 2010”,點選“finish”;
3)第一次“configure”會報錯,將“WITH_BINDINGS”等項取消,只保留“WITH_DESKTOP”、“WITH_INTERNAL_QEXTSERIALPORT”、“WITH_QWTPOLAR”三項即可。
在這裡插入圖片描述

在這裡插入圖片描述
4)還沒完,敲黑板,這一步是關鍵步驟。下面是一些關鍵的依賴項配置。稍有差池,不能保證後期編譯成功。
(1)PYTHON_LIBRARY:C:/Python27/libs/python27.lib (這裡需要自己安裝Python,筆者使用的版本為Python 2.7.9 64 bit) 如果沒有報錯缺失python.lib,可以跳過這一步
(2)SETUPAPI_LIBRARY:C:/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Lib/SetupAPI.Lib
(3)設定QSCINTILLA_INCLUDE_DIR和QSCINTILLA_LIBRARY:分別為C:\Qt\4.8.6\include以及C:/Qt/4.8.6/lib/qscintilla2_qt4d.lib
(4)編譯qwt,假設編譯後的qwt路徑為:C:/Qwt-6.1.2,那麼設定QWT_INCLUDE_DIR為C:/Qwt-6.1.2/include,設定QWT_LIBRARY為C:/Qwt-6.1.2/lib/qwt.lib 不會編譯?莫慌,編譯過程 so easy,參見我的另一篇部落格:《qwt 6.1.2的編譯與安裝》
5)繼續點選“configure”,直到不報錯為止(如果還有報錯,參見下面的“注意”),點選“generate”生成,生成的vs工程在前面你配置Cmake時設定的“Where to build the binaries”對應的路徑下。

注意
如果Cmake提示缺少某個依賴庫,報錯內容形如:“cannot find xxx.lib”,原因一般有二:
1)第一個原因是這個依賴庫已經下載成功,但是Cygwin和OSGeo4W的環境變數配置不對,或者未生效。解決辦法是檢查前面Cygwin和OSGeo4W的環境變數配置,務必使其生效。再次提醒:Cygwin和OSGeo4W的安裝路徑不能有中文和空格!
2)第二個原因是確實在下載依賴庫的時候遺漏了該依賴庫,不要緊,缺啥補啥,這時只需重新安裝Cygwin或者OSGeo4W,重灌哪個取決於報錯缺失的庫來自於誰,除flex、bison、git之外,其它依賴項都是在安裝OSGeo4W的時候下載的。重灌Cygwin或者OSGeo4W時,在搜尋依賴庫的時候搜尋、安裝缺失的依賴庫即可。Cygwin或者OSGeo4W安裝是增量式安裝,重灌OSGeo4W時,已經安裝的庫不會丟失。
4、原始碼編譯:
1)在Cmake配置的輸出路徑下找到字尾為“.sln”的解決方案檔案,用VS2010雙擊開啟,等待VS將整個解決方案載入進來,如圖所示,對於本教程使用的QGIS2.14.16.7z,應該一共由198個專案
在這裡插入圖片描述
2)接下來進行編譯。將編譯型別從Debug更換為RelWithDebInfo,然後在左側198個專案中找到qgis,設定為啟動項,如下圖。然後在vs2010的選單欄選擇“生成”,點選“重新生成解決方案”,等待編譯完成(編譯需要不少時間,小木君使用的聯想Thinkpad T460 i7 512G固態硬碟,需要40分鐘以上)。在這裡插入圖片描述
3)筆者在編譯過程中沒有遇到報錯(如果大家在編譯過程中有報錯,歡迎在下方留言,本小木君會盡力幫助解答)。
4)編譯完後,點選啟動,報錯內容忘記截圖了,但大概是“無法載入xxx.dll”之類的錯誤,意思是qgis啟動時缺失某個或某些dll。莫慌,這些dll存在的位置不外乎在你的Cygwin安裝路徑、OSGeo4W安裝路徑、Qt安裝路徑下。去這些資料夾中找到該dll。拷貝到上述編譯完後生成的qgis.exe的同級目錄下。例如,提示缺失qscintilla2_qt4d.dll和qwt.dll,這兩個dll位於你的Qt安裝路徑下,只需找到後拷貝到qgis.exe的同級目錄下即可。
5、啟動QGIS:
見證奇蹟的時刻到了。
點選“啟動除錯(F5)”,可以看到成功啟動QGIS。
在這裡插入圖片描述
在這裡插入圖片描述
接下來就可以開啟你奇妙的QGIS之旅了。

寫在後面的話

    本教程經小木君親身實踐所得,已經力求仔細完整,然而仍可能存在疏漏之處。如果大家在使用 本教程的過程中有任何疑問,歡迎在下方留言,小木君會第一時間為大家解答。
    歡迎關注我的部落格,暱稱“木之野火”,ID“m0_37287361”,小木君誠願和大家一起學習進步。