一 編譯環(huán)境
操作系統(tǒng):windows10 64位企業(yè)版,編譯器:visualstudio2017企業(yè)版.Spatialite版本:4.30.
二 編譯步驟
下載Spatialite源代碼.? ? Spatialite屬于Gaia-SINS項(xiàng)目中的一個(gè),Gaia-SINS項(xiàng)目的主頁是http://www.gaia-gis.it/gaia-sins/,這個(gè)頁面列出了Gaia-SINS的所有子項(xiàng)目。

點(diǎn)擊紅框中的Spatialite鏈接進(jìn)入到Spatialite項(xiàng)目主頁。

下載下來并解壓后會(huì)得到以下文件

注意nmake.opt,makefile.vc,config-msvc.h三個(gè)文件,后面用nmake編譯的時(shí)候需要對(duì)這三個(gè)文件進(jìn)行一些修改.src文件是Spatialite的源碼,里面也需要做一些修改.
查看依賴庫 Spatialite有幾個(gè)依賴的第三方庫,在編譯Spatialite之前需要提前把這些第三方庫準(zhǔn)備好, 先來看一下依賴的第三方庫有哪些.這里我們使用Nodepad++打開Home下面的makefile.vc文件,找到第75行

從這段代碼中,可以看到這個(gè)版本的Spatialite需要的第三方庫:
proj
geos
freexl
iconv
sqlite3
zlib
libxml2
安裝第三方庫 這里不推薦手動(dòng)編譯所有依賴的第三方庫,比較麻煩.這里推薦的方式是使用osgeo4w工具來安裝所需要的部分第三方庫.比如freexl ,iconv,zlib,libxml2。Osgeo4w是一個(gè)實(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)擊下一步
會(huì)有一個(gè)加載頁面,如果網(wǎng)速慢,可能會(huì)在這里卡一會(huì)兒.然后會(huì)自動(dòng)跳轉(zhuǎn)到下一個(gè)界面

點(diǎn)擊View按鈕,直到Category變成Full,下面表格的顯示方式也會(huì)改變

在Search里面輸入freexl

選擇第一個(gè),點(diǎn)擊第一行的Skip

點(diǎn)擊Clear,在Search里面輸入iconv

點(diǎn)擊Clear,在Search里面輸入zlib

只有一個(gè)結(jié)果,點(diǎn)擊Skip

點(diǎn)擊Clear,在Search里面輸入libxml2

只有一個(gè)結(jié)果,點(diǎn)擊Skip
現(xiàn)在所需要的第三方庫都已經(jīng)選中了,點(diǎn)擊下一步

這時(shí)候會(huì)彈出一個(gè)警告,說下面列出來的包是需要的,但是沒有被選中,這時(shí)候我們只要保證

這個(gè)復(fù)選框是選中的就行,然后點(diǎn)擊下一步

這時(shí)候osgeo4w就開始安裝剛才選中的庫以及其依賴庫,只要等著安裝完成就行了.如果碰到安裝失敗的問題,那可能是國(guó)內(nèi)的網(wǎng)絡(luò)問題,請(qǐng)使用vpn.然后按照上面的步驟重新來一遍.
安裝完成后,點(diǎn)擊完成按鈕退出.安裝好依賴庫之后可以看到兩個(gè)變化,第一個(gè)是在C盤下面多出了一個(gè)OSGeo4W64文件夾

里面有第三方庫的頭文件,lib和bin
接下來我們打開OSGeo4w64目錄文件夾,如下圖所示,然后分別把我們已經(jīng)編譯好的proj,geos, sqllite3等第三方庫的頭文件,lib,dll對(duì)應(yīng)的放入目錄下。

另外一個(gè)變化,就是在osgeo4w的安裝程序目錄下面多出了一個(gè)文件夾,用于存放下載過的庫

編譯Spatialite 前面的準(zhǔn)備工作做好以后,開始編譯Spatialite.需要先對(duì)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庫.