由于接下来的工作要求,需要再次了解GDAL的VS编译方式;这里暂时不考虑GDAL3版本(因为必须整PROJ6和sqlite的库)。
GDAL与GEOS
- GDAL中的空间谓词,一般返回bool型的方法,如
intersect,contains
; - GDAL空间关系,一般返回几何运算结果,如
buffer等
; - 二者一般都是由GEOS库去实际运算的;GDAL一般调用GEOS的C接口方法,它封装了GEOS的c++实际的功能实现,方法名长期稳定,不会轻易修改或者
Deprecated
!
环境
时间:20210416
VS:2015(每个GDAL版本都有对应的nmake VS版本限制,204貌似主要是VS2015和2017,不支持旧版)
Windows:10
GDAL:2.4.4
GEOS:2.8.2
库下载
Github的Tags自己去找对应版本
GEOS
- geos的编译没什么问题,直接使用cmake就行;
- 需要注意的是最好是将输出的VS工程文件直接设置与当前的geos文件夹的路径一致:为了之后设置gdal的nmake.opt文件;
- 不一致的话之后就需要手动将生成的
geo_c.h
文件配置好路径了。。。
GDAL
不知道为啥GDAL不弄cmake文件,所以只能使用nmake,即nmake.opt
文件,修改其中的相关库的配置;
- 使用终端cmd cd到gdal文件夹查看
.\generate_vcxproj.bat
参数 - 使用命令如:generate_vcxproj 14.0 64 gdal_vs2015,这样就会生成对应
.vcxproj
- 修改当前文件夹的namke.opt文件,开头修改VS版本号,人家也明确说这个版本的GDAL的nmake只支持vs2015(1900)和VS2017(1910)
- 然后修改GDAL_HOME,即如果你后面需要自动输出一个dll,lib啥的路径;当然也可以不修改,直接在工程里编译后拷贝是一样的 ;
- 最后设置GEOS库路径,注意一定将签名的井号(#)注释符去掉!;注意最后的LIB路径其实用debug还是release都一样,因为一样大而且不影响编译。
- 到这里打开
vcxproj
文件其实就可以直接编译了;如果想让他自动输出刚才设置的GDAL_HOME路径下;打开工程属性,加入install会输出bin,data,html
三个文件夹;换成devinstall会输出lib和include
文件夹;
总结
- 弄清楚流程不是很困难,什么nmake,cmake,qmake都是老外整的一堆骚东西~
- 最后的debug与release的lib大小一样,所以实际项目中使用哪个lib都可以;GEOS的也是一样;但是dll可不一样;我主要是想要pdb文件进行调试,所以还是使用了debug版本;接下来要考虑的是使用release版本进行调试!