天天看點

《GDAL源碼剖析與開發指南》一一1.7 SWIG編譯

本節書摘來自異步社群出版社《gdal源碼剖析與開發指南》一書中的第1章,第1.7節,作者:李民錄 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

gdal源碼剖析與開發指南

1.7.1 swig簡介

下載下傳安裝swig的時候我們注意要下載下傳swigwin檔案而不是下載下傳源代碼。以swigwin-2.0.4為例,我們下載下傳swigwin-2.0.4.zip檔案後解壓,将解壓目錄也添加到環境變量path中去,否則後面需要設定swig的所在目錄。檢驗swig是否成功設定到環境變量path中的最簡單的辦法就是在運作中輸入swig後回車,如果提示windows找不到swig,那麼說明沒有設定成功;如果出現一個黑屏一閃而過,那麼說明已經設定成功了。

下面三小節需要在安裝完swig之後才能進行編譯。需要注意的是,編譯下面三種語言的gdal之前,我們首先要編譯c++版本的,就是1.6節的内容。

**

1.7.2 編譯c#版本gdal**

首先,我們打開nmake.opt檔案,找到swig = swig.exe這一句,假如沒有将swig的目錄添加到環境變量中,那麼将這句後面的swig.exe修改為swig.exe的全路徑,如f:work3rdpartswigwin-2.0.4swig.exe;如果設定了環境變量,那麼就不需要進行修改了。

然後,我們按照1.6節中的使用cmd指令編譯gdal的方式來進行編譯,打開“visual studio 2008指令提示”并定位到gdal源代碼目錄,然後依次執行如下三行指令,其實就是編譯c++版本的gdal。

執行以上三句之後,接下來我們使用cd指令,進入swigcsharp檔案夾中并使用nmake工具編譯,指令如下所示。

執行完以上兩句指令後,系統會在csharp檔案夾下生成8個dll檔案,并将這8個dll檔案複制到gdal輸出目錄下的csharp檔案夾中。

這8個dll分别如下。

在c#工程中引用gdal的時候,我們隻需要把上面8個dll中後面以_csharp.dll結尾的四個dll加入到c#工程中即可。需要注意的是,在使用這幾個dll的時候我們需要将gdal110.dll以及它依賴的其他dll都複制到同一個目錄中,才能使c#程式正常運作。

1.7.3 編譯python版本gdal

在編譯python版本之前,我們要確定自己的電腦中已經安裝了python。如果我們安裝了arcgis軟體,那麼就不用再安裝python了,因為在安裝arcgis的時候必須要安裝python。将python的bin目錄添加到環境變量path中去,然後我們就可以開始編譯python版本的gdal了。

打開nmake.opt檔案(1.10版本大概76行左右),将pydir後面的路徑修改為本機python的路徑。

修改完之後,儲存nmake.opt檔案。接下來使用cd指令将指令行定位到swigpython目錄後,依次輸入如下指令。

執行完上述指令後,我們會在python的site-packages目錄看到多了gdal和ogr的檔案以及一個osgeo的檔案夾。我們将編譯出來的gdal110.dll以及它依賴的所有dll都複制到site-packages檔案夾中的osgeo檔案夾中,最後就可以在python中用imort gdal來使用gdal了。測試python版本的gdal是否安裝成功,可以使用如下python代碼。

1.7.4 編譯java版本gdal

在編譯java版本的gdal時,除swig之外,我們還需要jre和ant這兩個工具,沒有的話需要先下載下傳安裝,其中ant隻需直接解壓,不用安裝。接下來我們用記事本打開nmake.opt,找到第86行左右位置(1.10版本),将檔案中的java_home和ant_home修改為本機的路徑,隻要修改到主檔案夾即可(就是bin檔案夾所在的檔案夾);如果檔案夾路徑有空格的話,把路徑用雙引号引起來,修改後的内容與以下代碼類似。

修改儲存之後,我們就可以編譯java版本的gdal了,首先還是要先編譯c++版本的gdal,然後使用cd指令切換到swig檔案夾中,開始編譯java版本gdal。

正常情況下,執行完上面的指令後java版本的gdal應該就編譯完成了。編譯出來的檔案存放在swigjava目錄中,主要有以下五個檔案。

如果目錄中有上面的五個檔案,那就說明編譯成功,如果沒有,則要根據指令行編譯的輸出資訊排除錯誤重新生成。我們将上面五個檔案以及編譯gdal時生成的gdal110.dll複制到一個建立的檔案夾,用于java程式調用。