Win64下编译集成GEOS和Proj4的GDAL
文章目录
- 1.编译GEOS
- 2.编译Proj4
- 3.GDAL集成Proj4和GEOS
- 1) 修改安装的目录
- 2) 配置Proj4
- 3) 配置GEOS
- 4) 自定义动态库名称(可跳过)
- 5) 编译
1.编译GEOS
可参看我的这篇文档 VS2015编译GEOS的debug和release版本。
2.编译Proj4
现在最新的proj5.2.0已经可以通过cmake进行编译了,尝试了一下确实比以前要方便点。解压下载的proj5.2.0的压缩包,在cmake界面填入如下路径:
点击“configure”,选择合适的编译器,就会出现上图的配置选项。这里注意BUILD_LIBPROJ_SHARED和BUILD_SHARED_LIBS这两个选项默认是没有勾选的,如果直接编译,之后得到的就会是静态库。由于我需要动态库,这里就都勾选了(两者分别勾选的具体含义还需要进一步确认)。此外,CMAKE_INSTALL_PREFIX这个配置项也要注意。cmake得到的工程都有install工程,生成之后就会自动把需要的头文件、lib还有dll复制到对应的目录中去,这样方便我们管理。
之后点击“Generate”,之前设置的build目录中就生成了VS的工程。
用VS打开工程,生成解决方案,等待编译完成。有的VS项目互相依赖,可能需要多生成几次。最后,生成一次INSTALL项目,之前CMAKE_INSTALL_PREFIX设置的目录就会有相应的头文件、dll、lib以及依赖。
3.GDAL集成Proj4和GEOS
我这里编译的是GDAL的2.3.3版本。解压出gdal-2.3.3目录,找到目录中的nmake.opt,里面记录着相关的编译设置。用记事本打开,修改相应的配置。以下#号注释表示之前的配置,不带#号的表示修改之后的。
1) 修改安装的目录
#GDAL_HOME = "C:\warmerda\bld"
GDAL_HOME = "D:\Work\GDALBuild\gdal-2.3.3\result"
将GDAL_HOME修改为自己想要的目录。在编译和安装指令完成之后,就会把GDAL的所有的精简依赖发送到这个目录中。
2) 配置Proj4
# PROJ stuff
# Uncomment the following lines to link PROJ library statically. Otherwise
# it will be linked dynamically during runtime.
# To use the new API of proj5 or later, use
#PROJ_FLAGS = -DPROJ_STATIC -DPROJ_VERSION=5
# for proj 4.x:
#PROJ_FLAGS = -DPROJ_STATIC -DPROJ_VERSION=4#PROJ_INCLUDE = -Id:\projects\proj.4\src
PROJ_INCLUDE = -ID:\Work\GDALBuild\proj-5.2.0\src
#PROJ_LIBRARY = d:\projects\proj.4\src\proj_i.lib
!IFDEF DEBUG
PROJ_LIBRARY = D:\Work\GDALBuild\proj-5.2.0\result\x64_debug\local\lib\proj_5_2_d.lib
!ELSE
PROJ_LIBRARY = D:\Work\GDALBuild\proj-5.2.0\result\x64_release\local\lib\proj_5_2.lib
!ENDIF
根据注释,PROJ_FLAGS是静态编译的时候才需要开启的,而刚才我们编译的Proj4编译的是动态库,所以不用管这个配置项目。PROJ_INCLUDE是需要的头文件,根据实例引用到proj的src目录即可。PROJ_LIBRARY表示需要的lib,这里根据是否debug模式,引入刚才编译的不同的.lib。
3) 配置GEOS
# Uncomment for GEOS support (GEOS >= 3.1.0 required)
#GEOS_DIR=C:/warmerda/geos
#GEOS_CFLAGS = -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/source/headers -DHAVE_GEOS
#GEOS_LIB = $(GEOS_DIR)/source/geos_c_i.lib
GEOS_DIR=D:/Work/GDALBuild/geos-3.7.1
GEOS_CFLAGS = -I$(GEOS_DIR)/capi -I$(GEOS_DIR)/include -DHAVE_GEOS
!IFDEF DEBUG
GEOS_LIB = $(GEOS_DIR)/geos_build/x64_debug/geos_c_i_d.lib
!ELSE
GEOS_LIB = $(GEOS_DIR)/geos_build/x64_release/geos_c_i.lib
!ENDIF
这段配置的意思是设置GEOS_DIR为GEOS的根目录,GEOS_CFLAGS引用到根目录下的capi文件夹和include文件夹作为编译需要的头文件,根据是否是debug模式,设置GEOS_LIB为对应的lib。
4) 自定义动态库名称(可跳过)
#GDAL_DLL = gdal$(VERSION).dll
!IFDEF DEBUG
GDAL_DLL = gdal$(VERSION)D_CL.dll
!ELSE
GDAL_DLL = gdal$(VERSION)_CL.dll
!ENDIF
根据这篇文章《自定义编译gdal库》,可以将生成DLL、lib根据是否debug模式改成不同的名称。尝试过多次,修改dll名称是可以的,修改lib名称存在问题。
5) 编译
在安装VS2015环境后的“开始菜单”中找到“VS2015x64本机工具命令提示符”并启用。CD到gdal-2.3.3目录,依次输入以下指令(debug模式):
nmake -f makefile.vc MSVC_VER=1900 WIN64=1 DEBUG=1 ANALYZE=1 WITH_PDB=1
nmake -f makefile.vc MSVC_VER=1900 WIN64=1 DEBUG=1 ANALYZE=1 WITH_PDB=1 install
nmake -f makefile.vc MSVC_VER=1900 WIN64=1 DEBUG=1 ANALYZE=1 WITH_PDB=1 devinstall
第一个指令表示编译,时间较长。第二个第三个指令表示安装,会把GDAL的依赖复制到GDAL_HOME制定的的文件夹。如果需要release模式,则输入以下指令:
nmake -f makefile.vc MSVC_VER=1900 WIN64=1
nmake -f makefile.vc MSVC_VER=1900 WIN64=1 install
nmake -f makefile.vc MSVC_VER=1900 WIN64=1 devinstall
最后输出的结果:
Win64下编译集成GEOS和Proj4的GDAL相关推荐
- GDAL源码剖析(八)之编译GEOS和PROJ4库
在用到GDAL时,经常会用到Proj4和GEOS,关于这两个库的作用,可以到其官网看看.下面编译是在Windows环境下,编译器使用MS的VS2008. 一.编译PROJ4 PROJ4的最新版本是4. ...
- QGIS编译(跨平台编译)之十五:geos编译(Windows、Linux、MacOS环境下编译)
目录 1.Geos介绍 2.Geos下载 3.Windows下编译 4.Linux下编译 5.MacOS下编译 1.Geos介绍 GEOS 是一个用于计算几何的 C/C++ 库,专注于 地理信息系统( ...
- linux ant 编译,【Jenkins】linux下Jenkins集成ant进行编译并发送结果
三个文章吧: 1 如何使用ant编译执行jmeter测试用例,并生成html报告 2 如何在Linux下搭建jenkins环境. 3 如何在Linux下搭建的jenkins中执行ant构建运行,并发送 ...
- Linux下编译GDAL
一.准备工作 从官网下载GDAL.PROJ.4和GEOS,将其存放在/home/liml/Work/3rdPart目录并解压,如下图所示.下载地址请自行Google.注:使用的系统是CentOS6.4 ...
- GDAL库简介以及在Windows下编译过程
GDAL(Geospatial Data Abstraction Library,地理空间数据抽象库)是一个在X/MIT许可协议下的开源栅格空间数据转换库.官网http://www.gdal.org/ ...
- NDK实践(一)在linux环境下编译ffmpe
系列文章目录: NDK实践(一)在linux环境下编译ffmpe NDK实践(二)将编译的ffmpeg静态库集成到Android工程 最近开始接触学习ndk开发,本着边学习边实践的原则,计划完成视频编 ...
- linux下编译Zero C ICE
0.简介 ZeroC ICE 是指ZeroC公司(www.zeroc.com)的ICE(Internet Communications Engine)中间件平台. 目前ICE平台中包括Ice,Ice- ...
- Apache 配置------FastCGI方式使用PHP(包含:linux下编译安装fmod_fcgid,配置apache以支持FastCGI)
本文用于记录Apache配置 FastCGI方式运行PHP(使用非线程安全版本) 下文包含如下内容: 1 linux下编译官网提供的最新版fmod_fcgid源码为os,方便linux或者window ...
- Windows下编译安装SALOME
SALOME是一套开源跨平台的CAE软件集成开发平台.本文旨在探索在Windows下编译安装SALOME核心模块的方法. 注1:文章内容会不定期更新,敬请关注. 注2:限于笔者研究水平,难免有不当之处 ...
最新文章
- Java培训都学什么
- 在Cisco路由器上配置WCCP
- webform 简单的服务器控件。
- js计算浮点数出现小数;解决js计算小数问题;js数组相加出现小数;
- 盘点数据处理工具,手把手教你做数据清洗和转换
- 不止1亿像素相机 小米MIX 4有望首发第四代超声波屏下指纹
- 查看被docker-proxy占用的端口
- 2018年,加油!!!
- Android——ViewHolder的作用与用法
- GaitSet:将步态作为序列的交叉视角步态识别
- 光纤通道交换机的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 黑群晖的驱动加载与卸载(以USB网卡驱动为例)
- ElasticSearch创建索引指定分片和副本
- 实时网速怎么看快慢_怎么看测出来的网速快慢
- 常见的数据分析工具有哪些?
- TS在前端发展的当前形式(愚见)
- c语言char和int8,关于数组:C中uint8和char之间的转换
- python下载vip素材_Python素材下载爬虫,多线程rar下载爬虫
- WaWa的奇妙冒险(第二周集训自闭现场)
- certbot申请通配符域名证书