文章目录

  • 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相关推荐

  1. GDAL源码剖析(八)之编译GEOS和PROJ4库

    在用到GDAL时,经常会用到Proj4和GEOS,关于这两个库的作用,可以到其官网看看.下面编译是在Windows环境下,编译器使用MS的VS2008. 一.编译PROJ4 PROJ4的最新版本是4. ...

  2. QGIS编译(跨平台编译)之十五:geos编译(Windows、Linux、MacOS环境下编译)

    目录 1.Geos介绍 2.Geos下载 3.Windows下编译 4.Linux下编译 5.MacOS下编译 1.Geos介绍 GEOS 是一个用于计算几何的 C/C++ 库,专注于 地理信息系统( ...

  3. linux ant 编译,【Jenkins】linux下Jenkins集成ant进行编译并发送结果

    三个文章吧: 1 如何使用ant编译执行jmeter测试用例,并生成html报告 2 如何在Linux下搭建jenkins环境. 3 如何在Linux下搭建的jenkins中执行ant构建运行,并发送 ...

  4. Linux下编译GDAL

    一.准备工作 从官网下载GDAL.PROJ.4和GEOS,将其存放在/home/liml/Work/3rdPart目录并解压,如下图所示.下载地址请自行Google.注:使用的系统是CentOS6.4 ...

  5. GDAL库简介以及在Windows下编译过程

    GDAL(Geospatial Data Abstraction Library,地理空间数据抽象库)是一个在X/MIT许可协议下的开源栅格空间数据转换库.官网http://www.gdal.org/ ...

  6. NDK实践(一)在linux环境下编译ffmpe

    系列文章目录: NDK实践(一)在linux环境下编译ffmpe NDK实践(二)将编译的ffmpeg静态库集成到Android工程 最近开始接触学习ndk开发,本着边学习边实践的原则,计划完成视频编 ...

  7. linux下编译Zero C ICE

    0.简介 ZeroC ICE 是指ZeroC公司(www.zeroc.com)的ICE(Internet Communications Engine)中间件平台. 目前ICE平台中包括Ice,Ice- ...

  8. Apache 配置------FastCGI方式使用PHP(包含:linux下编译安装fmod_fcgid,配置apache以支持FastCGI)

    本文用于记录Apache配置 FastCGI方式运行PHP(使用非线程安全版本) 下文包含如下内容: 1 linux下编译官网提供的最新版fmod_fcgid源码为os,方便linux或者window ...

  9. Windows下编译安装SALOME

    SALOME是一套开源跨平台的CAE软件集成开发平台.本文旨在探索在Windows下编译安装SALOME核心模块的方法. 注1:文章内容会不定期更新,敬请关注. 注2:限于笔者研究水平,难免有不当之处 ...

最新文章

  1. Java培训都学什么
  2. 在Cisco路由器上配置WCCP
  3. webform 简单的服务器控件。
  4. js计算浮点数出现小数;解决js计算小数问题;js数组相加出现小数;
  5. 盘点数据处理工具,手把手教你做数据清洗和转换
  6. 不止1亿像素相机 小米MIX 4有望首发第四代超声波屏下指纹
  7. 查看被docker-proxy占用的端口
  8. 2018年,加油!!!
  9. Android——ViewHolder的作用与用法
  10. GaitSet:将步态作为序列的交叉视角步态识别
  11. 光纤通道交换机的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  12. 黑群晖的驱动加载与卸载(以USB网卡驱动为例)
  13. ElasticSearch创建索引指定分片和副本
  14. 实时网速怎么看快慢_怎么看测出来的网速快慢
  15. 常见的数据分析工具有哪些?
  16. TS在前端发展的当前形式(愚见)
  17. c语言char和int8,关于数组:C中uint8和char之间的转换
  18. python下载vip素材_Python素材下载爬虫,多线程rar下载爬虫
  19. WaWa的奇妙冒险(第二周集训自闭现场)
  20. certbot申请通配符域名证书

热门文章

  1. 十大机器学习算法之一:线性回归
  2. 使用APACHE KNOX作为proxy访问web,同时开启SSO功能
  3. CCF认证2018124-数据中心
  4. 换个角度看拖延,拖拉一点也无妨
  5. Delphi 里 FillChar的用法
  6. Attribut方法 、鼠标事件、冒泡及捕获
  7. 【Qihoo360之Atlas配置文件详解】
  8. 外国网红靠 “财富密码” 在中国年入百万
  9. 前端 js 获取当前机子的ip
  10. Chapter One : 开启 Python 之旅