文章目录

  • 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. android 多个占位符,Android多语言支持:由于占位符计数不同导致的字符串格式问题...
  2. See the World 2015-6-10
  3. tensorflow兼容问题
  4. python打开excel表格-如何从python中用excel打开excel工作表?
  5. Hadoop fs命令详解
  6. 读《可复制的领导力》
  7. Java引入依赖aar,如何将JAR依赖项包含到AAR库中
  8. HBase性能优化方法总结
  9. 【特色团队采访】1+1+1>3?看新人团队如何高效合作
  10. bzoj 1878: [SDOI2009]HH的项链(主席树)
  11. NDSS 2021 论文泛读
  12. gsp计算机管理系的功能,医药系统的GSP管理
  13. 《程序员修炼之道》解读
  14. 【ML】从特征分解,奇异值分解到主成分分析
  15. 计算 arccos 7
  16. ORA-1653: unable to extend table by 1024 in tablespace(oracle表空间满了的解决方案)
  17. 微机原理与接口技术[第三版]——第七章课后习题答案
  18. 上传服务器后字体文件丢失,详解Vue+elementUI build打包部署后字体图标丢失问题...
  19. ionic platform add android环境搭建之难产【i1】【小白-2016.11.5】
  20. CSS box-shadow 详解

热门文章

  1. Error CodeSignatureDoesNotMatch/Code MessageThe request signature we calculated does not mat...
  2. 人脸对齐(三):Face Alignment by Explicit Shape Regression
  3. 固态硬盘装完无法启动备忘
  4. Python:制作一个模拟扔硬币的程序(附完整代码)
  5. ExtJs学习篇---OA系统登录界面设计
  6. 麒麟桌面系统搭建ftp服务
  7. 【Redis学习】解决使用redisTemplate 时 存入redis 的key 出现 \xac\xed\x00\x05t\x00
  8. Grammly专业版
  9. UNIX的段错误和总线错误和Windows的保护性异常
  10. Gitcafe使用笔记