GDAL目前最新版本3.0.1,但是編譯的時候需要Proj6的庫,所以還是選擇2.4.2;
geos 3.7.2目前是最新版本。
IDE:VS2017 Community
geos庫生成
過程:
- 運行:
autogen.bat
,該文件生成一些版本相關頭文件 - 使用vs nmake.exe,一般是對應VS版本的
x64 Native Tools Command Prompt 2017
- 按照下列步驟運行:
d:
cd D:\code\cpp\gdal\geos-3.7.2
nmake -f makefile.vc
nmake -f makefile.vc DEBUG=1
注意:
使用nmake編譯geos庫的時候需要注意的是在nmake.opt文件中需要自己看一下自己nmake.exe的版本,我的vs2017 x64 Native Tools Command Prompt 2017版本號不在nmake.opt文件中,所以在執行命令nmake -f makefile.vc
的時候會報錯Cannot determine Visual C++ version:
解決辦法就是在nmake.opt文件中加入當前nmake的版本號:
這樣編譯就可以通過了,默認得版本是Realease,最後會輸出geos.lib
,geos_d.lib
,geos_i.lib
,geos_i_d.lib
,geos_c_i.lib
,geos_c_i_d.lib
,geos.dll
,geos_d.dll
,geos_c.dll
,geos_c_d.dll
,一般我們使用geos_c_i.lib
與geos_c.dll
。
GDAL生成
過程:
- 使用vs nmake.exe,一般是對應VS版本的
x64 Native Tools Command Prompt 2017
- 按照下列步驟運行:
d:
cd D:\code\cpp\gdal\gdal-2.4.2
nmake -f makefile.vc
nmake -f makefile.vc install
nmake -f makefile.vc devinstall
加入geos庫:
在nmake生成之前需要先將nmake.opt
文件中的GEOS庫的配置加上,在文件中搜索GEOS,修改爲如下內容:
GEOS_DIR=D:/code/cpp/gdal/geos-3.7.2
GEOS_CFLAGS = -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/include -DHAVE_GEOS
GEOS_LIB = $(GEOS_DIR)/src/geos_c_i.lib//注意這裏使用的是Release版本geos庫
然後再nmake。
結果
- 生成之後有
gdal_i.lib
與gdal204.dll
;這裏Release與Debug名字是一樣的,目前不知道爲什麼!知道的可以告知,謝謝~ - 生成之後需要測試的話需要對gdal庫做空間分析,如
Buffer
等功能才能檢測出geos庫是否生成成功!
結論
- nmake之前沒怎麼用過,感覺還不錯~
- 有些庫不使用CMake不知道它到底是個什麼結構!