GDAL C++ 编译
——GDAL1.10.0编译过程(适用于1.11.0)
2013年6月27日
2015年2月7日修改proj编译清理
到GDAL官网http://www.gdal.org/,下载源代码。
下载gdal1100.zip(最新的发布版代码)。
下载源代码,并解压至相应目录。
1) 建立编译输出目录
2) 修改nmake.opt中instdir的值为新建立的编译输出目录
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。此步很重要,如果不清理,下次编译将使用本地输出。
dos下cd到proj.exe的目录下,注意,PROJ的参数区分大小写。
输入:proj +proj=utm +zone=11 +ellps=WGS84
输入:118d52'31"W 31d0'0"N
输出:320959.50 3431111.32
http://hi.baidu.com/liongg/item/838f7c9e8e6ae1dc1e42716d
下载源代码,并解压至相应目录。
1) 建立编译输出目录
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
将运行库设置为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
打开nmake.opt文件,将相应的注释修改好。
原始文件:
# 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。
# 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
将生成的geos_c.dll和proj.dll拷贝到makfile.vc同级目录下,供GDAL调用。
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调用。
1) cmd下打开gdalinfo,能否显示帮助。
2) 在win32控制台程序中,添加对include和lib的引用,dll拷贝到工程目录,然后包含ogrsf_frmts.h,运行,如果没用错误,则运行成功。
详细过程参见:GDAL_OGR读写操作。
将数据文件(bld\data\)设置为GDAL_DATA环境变量。这是QGIS里用到的值。用于设置数据路径。
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/