一 編譯環(huán)境
操作系統(tǒng):windows10 64位企業(yè)版苇羡,編譯器:visualstudio2017企業(yè)版.Spatialite版本:4.30.
二 編譯步驟
下載Spatialite源代碼.? ? Spatialite屬于Gaia-SINS項(xiàng)目中的一個,Gaia-SINS項(xiàng)目的主頁是http://www.gaia-gis.it/gaia-sins/程奠,這個頁面列出了Gaia-SINS的所有子項(xiàng)目计寇。
點(diǎn)擊紅框中的Spatialite鏈接進(jìn)入到Spatialite項(xiàng)目主頁扩淀。
下載下來并解壓后會得到以下文件
注意nmake.opt,makefile.vc,config-msvc.h三個文件,后面用nmake編譯的時候需要對這三個文件進(jìn)行一些修改.src文件是Spatialite的源碼,里面也需要做一些修改.
查看依賴庫 Spatialite有幾個依賴的第三方庫,在編譯Spatialite之前需要提前把這些第三方庫準(zhǔn)備好, 先來看一下依賴的第三方庫有哪些.這里我們使用Nodepad++打開Home下面的makefile.vc文件,找到第75行
從這段代碼中,可以看到這個版本的Spatialite需要的第三方庫:
proj
geos
freexl
iconv
sqlite3
zlib
libxml2
安裝第三方庫 這里不推薦手動編譯所有依賴的第三方庫,比較麻煩.這里推薦的方式是使用osgeo4w工具來安裝所需要的部分第三方庫.比如freexl 吠撮,iconv伊滋,zlib洋幻,libxml2郁轻。Osgeo4w是一個實(shí)用程序,可以幫你找到和下載第三方庫的頭文件,lib和dll. Osgeo4w的下載地址是https://trac.osgeo.org/osgeo4w/,單擊下圖箭頭指向處的紅框下載64位的OSgeo4w.
下載完成之后選擇安裝
選擇Advanced Install,點(diǎn)擊下一步
選擇Install from Internet,點(diǎn)擊下一步
Root Directory使用默認(rèn)的C:\OSGeo4W64,Install For選擇All Users,點(diǎn)擊下一步
Local Package Directroy我選擇的是D:\Osgeo,也就是存放osgeo4w安裝文件的位置.點(diǎn)擊下一步
選擇Direct Connection,點(diǎn)擊下一步
選中http://download.osgeo.org,使它變藍(lán),點(diǎn)擊下一步
會有一個加載頁面,如果網(wǎng)速慢,可能會在這里卡一會兒.然后會自動跳轉(zhuǎn)到下一個界面
點(diǎn)擊View按鈕,直到Category變成Full,下面表格的顯示方式也會改變
在Search里面輸入freexl
選擇第一個,點(diǎn)擊第一行的Skip
點(diǎn)擊Clear,在Search里面輸入iconv
點(diǎn)擊Clear,在Search里面輸入zlib
只有一個結(jié)果,點(diǎn)擊Skip
點(diǎn)擊Clear,在Search里面輸入libxml2
只有一個結(jié)果,點(diǎn)擊Skip
現(xiàn)在所需要的第三方庫都已經(jīng)選中了,點(diǎn)擊下一步
這時候會彈出一個警告,說下面列出來的包是需要的,但是沒有被選中,這時候我們只要保證
這個復(fù)選框是選中的就行,然后點(diǎn)擊下一步
這時候osgeo4w就開始安裝剛才選中的庫以及其依賴庫,只要等著安裝完成就行了.如果碰到安裝失敗的問題,那可能是國內(nèi)的網(wǎng)絡(luò)問題,請使用vpn.然后按照上面的步驟重新來一遍.
安裝完成后,點(diǎn)擊完成按鈕退出.安裝好依賴庫之后可以看到兩個變化,第一個是在C盤下面多出了一個OSGeo4W64文件夾
里面有第三方庫的頭文件,lib和bin
接下來我們打開OSGeo4w64目錄文件夾,如下圖所示好唯,然后分別把我們已經(jīng)編譯好的proj竭沫,geos, sqllite3等第三方庫的頭文件,lib,dll對應(yīng)的放入目錄下骑篙。
另外一個變化,就是在osgeo4w的安裝程序目錄下面多出了一個文件夾,用于存放下載過的庫
編譯Spatialite 前面的準(zhǔn)備工作做好以后,開始編譯Spatialite.需要先對nmake腳本和源代碼做一些修改. 源代碼修改 NMake編譯是從makefile.vc開始的,使用Nodepad打開D:\libspatialite-4.3.0a下面的makefile.vc,做以下幾處修改: 定位到第62行,原內(nèi)容如下
改為
定位到第75行到81行,原內(nèi)容如下
改為
使用Nodepad打開Home下面的nmake.opt,做以下幾處修改:
定位到第2行,原內(nèi)容
改為
定位到第5行到第6行,原內(nèi)容
改為
使用Nodepad打開Home下面的config-msvc.h,做以下幾處修改: 定位到146行,原內(nèi)容
使用Nodepad打開D:\libspatialite-4.3.0a下面的gg_extras.c,做以下幾處修改: 定位到63行,原內(nèi)容
改為
使用nmake編譯 依次選擇開始->所有程序->Visual Studio 2017 文件夾下按下圖找到該選項(xiàng),打開窗口
雙擊”VS2017 x64 本機(jī)工具命令提示”,打開命令行
輸入命令cd /d D:\libspatialite-4.3.0a,按回車進(jìn)入到Spatialite文件夾目錄
輸入nmake命令nmake /f makefile.vc install /s,按回車,開始進(jìn)行編譯
生成的頭文件蜕提,lib和dll分別在C:\OSGeo4W64\include\spatialite, C:\OSGeo4W64\lib和C:\OSGeo4W64\bin下面,需要說明的是靶端,生成的該版本的編譯文檔為Debuge版本Spatialite庫谎势。
如果要生成Release版本的, 使用Nodepad打開D:\libspatialite-4.3.0a下面的nmake.opt,做以下幾處更改: 定位到第5行到第7行,原內(nèi)容
改為
然后重新執(zhí)行nmake命令nmake /f makefile.vc install /s,就可以編譯Relese版本的Spatialite庫.