osg学习历程(4)—Win10 编译基于 VS2013 X64 的 gdal2.2.4

下载源码

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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值