下载源码
gdal官网 https://gdal.org/
CSDN下载 https://download.csdn.net/download/sinat_33513254/15465141
前期准备
本篇编译的是集成 GEOS 和 Proj 的 gdal。有关GEOS 和 Proj 的编译请看我之前的博客:
osg学习历程(2)—Win10 编译基于 VS2013 X64 的 proj4.9.3
osg学习历程(3)—Win10 编译基于 VS2013 X64 的 geos3.5.1
解压源码 gdal-2.2.4.tar.gz 到 E 盘,并在源码路径下创建 GDAL 文件夹用以放置编译结果。gdal 在 win 下的编译比较特殊,它不是由 cmake 来构建工程,而是通过 nmake 配置文件来直接构建。
使用 nodepad++ 打开源码根目录的 nmake.opt 修改相应的配置,里面记录着相关的编译设置。
这里需要注意的是 48 行指定 VS 版本,默认为 2008,改为 2013 对应的版本号(1800)。188行 可指定生成64位,不过这里先不修改,最后面在 nmake 时加上 WIN64=1 参数即可。
修改 gdal 安装目录
64行
GDAL_HOME = "E:\osg\gdal-2.2.4\GDAL"
配置 proj
536行,这里使用之前静态编译的 proj。
PROJ_FLAGS = -DPROJ_STATIC
PROJ_INCLUDE = -IE:\osg\proj-4.9.3\PROJ\local\include
PROJ_LIBRARY = E:\osg\proj-4.9.3\PROJ\local\lib\proj_4_9_d.lib
配置 geos
599行,这里使用之前静态编译的 geos。
GEOS_DIR=E:/osg/geos-3.5.1
GEOS_CFLAGS = -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/include -DHAVE_GEOS
GEOS_LIB = $(GEOS_DIR)/src/geos_c_i_d.lib
自定义动态库与lib库文件名称
763行
GDAL_DLL = gdal_i_d.dll
通过修改798行库文件名称会导致编译失败。所以 debug 和 release 编译出来的 lib 文件名字是一样的。这样的话,就需要在编译其中一个版本之后,备份或改名一下,再编译另外的版本。
编译
打开 VS2013 x64 本机工具命令提示符,CD 到源码根目录 E:\osg\gdal-2.2.4,依次输入命令(debug 模式):
e:
cd E:\osg\gdal-2.2.4
nmake -f makefile.vc MSVC_VER=1800 WIN64=1 DEBUG=1 ANALYZE=1 WITH_PDB=1
nmake -f makefile.vc MSVC_VER=1800 WIN64=1 DEBUG=1 ANALYZE=1 WITH_PDB=1 install
nmake -f makefile.vc MSVC_VER=1800 WIN64=1 DEBUG=1 ANALYZE=1 WITH_PDB=1 devinstall
第一个指令表示编译,第二个第三个指令表示安装,会把 gdal 的编译结果拷贝到 GDAL_HOME 指定的文件夹。
如果需要 release 模式,则输入以下指令(这里需要注意的是,编译完 debug 之后,把 gdal_i.lib 文件名改为 gdal_i_d.lib,因为之后编译 release 由于 lib 文件名一样,会导致覆盖替换到之前 debug 编译的 lib 库文件。另外之前的 proj 和 geos 所链接的 lib 文件名称也要改为 release 的,GDAL_DLL 改为 gdal_i.dll):
nmake -f makefile.vc MSVC_VER=1800 WIN64=1
nmake -f makefile.vc MSVC_VER=1800 WIN64=1 install
nmake -f makefile.vc MSVC_VER=1800 WIN64=1 devinstall