GDAL C++ 编译

GDAL C++ 编译

——GDAL1.10.0编译过程(适用于1.11.0)

2013年6月27日

2015年2月7日修改proj编译清理

1  下载源代码

到GDAL官网http://www.gdal.org/,下载源代码。

下载gdal1100.zip(最新的发布版代码)。

2 PROJ.4编译

2.1 源代码设置

下载源代码,并解压至相应目录。

2.2 建立运行库目录

1)   建立编译输出目录

2)   修改nmake.opt中instdir的值为新建立的编译输出目录

2.3 编译源代码

1)   使用VS2010的命令提示行工具,cd至源文件所在文件夹,找到makefile.vc所在的目录。

a)   如果使用vs2012forxp,则添加以下内容:

setLINK=/SUBSYSTEM:CONSOLE,5.01 %LINK%

参考:

http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx

2)   输入编译指令:nmake /f makefile.vc install

3)   输入编译指令:nmake /f makefile.vc install-all。系统开始编译,并输出文件。

4)   清理临时文件:nmake /f makefile.vc clean。此步很重要,如果不清理,下次编译将使用本地输出。

2.4 测试

dos下cd到proj.exe的目录下,注意,PROJ的参数区分大小写

输入:proj +proj=utm +zone=11 +ellps=WGS84

输入:118d52'31"W 31d0'0"N

输出:320959.50       3431111.32

2.5 参考

http://hi.baidu.com/liongg/item/838f7c9e8e6ae1dc1e42716d

 

3 GEOS编译

3.1 源代码设置

下载源代码,并解压至相应目录。

3.2 建立运行库目录

1)   建立编译输出目录

3.3 编译源代码

1)   使用VS2010的命令提示行工具,cd至源文件所在文件夹,找到makefile.vc所在的目录。

2)   输入编译指令:autogen.bat

3)   输入编译指令:nmake /f makefile.vc

a)   如果出现vc版本无法找到的问题,则找到当前的nmake版本信息(nmake /P,显示所有宏定义找到_NMAKE_VER),打开nmake.opt,修改版本信息:(如:vs2012)

!ELSEIF"$(_NMAKE_VER)" == "11.00.61030.0"

GEOS_MSVC = 11.0

GEOS_MSC = 1700

b)   不能设置LINK,否则出错。如果设置了LINK,则使用set LINK= 置空。

4)   将src目录下生成的文件geos.dll,geos_c.dll,geos.lib,geos_i.lib,geos_c_i.lib拷贝到运行库。dll放入bin子目录,lib放入lib子目录。将CAPI,include文件夹也拷贝到运行库目录。

5)   清理中间文件:nmake /f makefile.vc clean

4 GDAL编译

4.1 将源代码解压

4.2 建立运行库目录

4.3 设置环境变量

将运行库设置为GDAL_HOME环境变量。这是NMAKE.opt里用到的值。用于设置文件的输出路径。

set GDAL_HOME= F:\DevelopWare\OGC\GDAL\bld1.11.0_vs2012

设置nmake.opt文件中默认输出路径:

!IFNDEF GDAL_HOME

GDAL_HOME ="F:\DevelopWare\OGC\GDAL\bld1.11.0_vs2012"

!ENDIF

4.4 集成GEOS、PROJ(可选)

打开nmake.opt文件,将相应的注释修改好。

4.4.1 GEOS

原始文件:

# Uncomment for GEOS support

#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

修改如下:

# Uncomment for GEOS support

GEOS_DIR=F:\DevelopWare\OGC\GEOS\bld

GEOS_CFLAGS = -I$(GEOS_DIR)\capi -I$(GEOS_DIR)\include -DHAVE_GEOS

GEOS_LIB    = $(GEOS_DIR)\lib\geos_c_i.lib

说明:GEOS_DIR:目录宏,用于下面内容的设置。

GEOS_CFLAGS:接口头文件。

GEOS_LIB:接口lib。

4.4.2 PROJ

# PROJ.4 stuff

# Uncomment the following lines to link PROJ.4library statically. Otherwise

# it will be linked dynamically during runtime.

PROJ_FLAGS = -DPROJ_STATIC

PROJ_INCLUDE = -IF:\DevelopWare\OGC\PROJ\bld\include

PROJ_LIBRARY = F:\DevelopWare\OGC\PROJ\bld\lib\proj_i.lib

4.4.3 DLL

将生成的geos_c.dll和proj.dll拷贝到makfile.vc同级目录下,供GDAL调用。

4.5 编译源代码

1)   使用VS2010的命令提示行工具,cd至源文件所在文件夹,找到makefile.vc所在的目录。

2)   编译指令:nmake /f makefile.vc

系统开始编译,需要几分钟时间,中间有许多的警告等,无视。

3)   将编译的文件拷贝到运行库目录

nmake /fmakefile.vc install

运行完成后,运行库目录出现bin,data,html三个文件夹。

4)   将编译的文件拷贝到开发库目录

nmake /fmakefile.vc devinstall

运行完成后,运行库目录增加了include和lib两个文件夹。

5)   清理临时文件(非常重要,如果没有清理,再次编译会使用原先的文件,造成编译失效)

namke /fmakefile.vc clean

6)   将生成的geos_c.dll和proj.dll拷贝到gdal111.dll的目录下,供GDAL调用。

5 测试

1)       cmd下打开gdalinfo,能否显示帮助。

2)       在win32控制台程序中,添加对include和lib的引用,dll拷贝到工程目录,然后包含ogrsf_frmts.h,运行,如果没用错误,则运行成功。

详细过程参见:GDAL_OGR读写操作。

6 Enjoy!

将数据文件(bld\data\)设置为GDAL_DATA环境变量。这是QGIS里用到的值。用于设置数据路径。

7 参考

GDAL编译:http://www.360doc.com/content/12/1028/05/1472642_244187667.shtml

http://www.cnblogs.com/bigbigtree/archive/2011/11/20/2256434.html

http://wenku.baidu.com/view/3ef41c283169a4517723a3ab.html

GEOS编译:http://cart033.blog.163.com/blog/static/68760122201072695615591/

你可能感兴趣的:(GDAL/OGR,gdal,ogr,编译,C++,GDAL_DATA)