VS2017編譯gdal-2.4.2與geos-3.7.2


GDAL目前最新版本3.0.1,但是編譯的時候需要Proj6的庫,所以還是選擇2.4.2;
geos 3.7.2目前是最新版本。
IDE:VS2017 Community


geos庫生成

過程:

  1. 運行:autogen.bat,該文件生成一些版本相關頭文件
  2. 使用vs nmake.exe,一般是對應VS版本的x64 Native Tools Command Prompt 2017
  3. 按照下列步驟運行:
  • 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.libgeos_c.dll

GDAL生成

過程:

  1. 使用vs nmake.exe,一般是對應VS版本的x64 Native Tools Command Prompt 2017
  2. 按照下列步驟運行:
  • 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.libgdal204.dll這裏Release與Debug名字是一樣的,目前不知道爲什麼!知道的可以告知,謝謝~
  • 生成之後需要測試的話需要對gdal庫做空間分析,如Buffer等功能才能檢測出geos庫是否生成成功!

結論

  • nmake之前沒怎麼用過,感覺還不錯~
  • 有些庫不使用CMake不知道它到底是個什麼結構!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章