前言
最近公司软件版本升级,以前gis相关库有自行编译的有从网上下载的,而且当初编译的源码都被以前的同事带走了,某些bug想要调试源码变得不可能,于是,端午期间连续奋战18小时,编译了一套gis相关库,包括主要的sqlite,geos,proj,libcurl,spatialite,gdal,osg,osgearth等等一个系列,编译库过程最头疼的就是版本不适配问题,有些库被很多库强依赖,比如geos,proj就是spatialite,gdal,osg等依赖,版本不适配导致编译最后一个库是前面的所有工作可能白费,所以贴一个成功的列表分享给大家,亲身实验全程没有磕磕巴巴。
一、版本列表
名称 | 版本 | 用途 |
---|---|---|
zlib | 1.2.13 | zlib是一套通用的解压缩开源库 |
giflib | 5.1.4 | giflib 是一个用于读取和写入 gif 图像的开源库 |
sqlite3 | 3420000 | SQLite是一款轻型的开源数据库 |
libpng | 1639 | Libpng 是一个用于读取和写入 png 图像的开源库 |
libjpeg | 9e | Libjpeg是一个用于读取和写入 jpeg 图像的开源库 |
libLZMA | 5.2.5 | 类似zlib,是一个Deflate和LZ77算法改良和优化后的压缩算法库 |
libTiff | 4.5.0 | libTiff是一个用于读取和写入 tiff 图像的开源库 |
openjpeg | 2.5.0 | OpenJPEG 是用 C 语言编写的开源 JPEG 2000 编解码器 |
OpenSSL | 3.0.3 | OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份 |
libSSH2 | 1.10.0 | libssh2是一个开源的C函数库,用来实现SSH2协议 |
libcurl | 7.83.1 | libcurl主要功能就是用不同的协议连接和沟通不同的服务器,相当封装了的socket |
iconv | 1.17 | libiconv是一个提供编码转换的开源库 |
libxml2 | 2.9.14 | Libxml2 是一个xml c语言版的解析器 |
proj | 9.0.0 | PROJ 是一款通用坐标转换库 |
geos | 3.9.3 | GEOS 是一个用于计算几何的 C/C++ 库 |
xerces | 3.2.4 | Xerces-c是面向C/C++语言的XML文档解析库 |
freetype | 2.12.1 | FreeType库是一个完全免费(开源)的、高质量的且可移植的字体引擎 |
FBX | fbx202034_fbxsdk_vs2017_win.exe | FBX是Autodesk公司出品的一款用于跨平台的免费三维创作与交换格式的软件 |
FreeXL | 1.0.6 | FreeXL是一个开源库,从电子表格中提取有效数据 |
librttopo | 1.1.0 | RT Topo是一个开源的拓扑库,用于创新和管理用户提供的拓扑关系 |
minzip | zlib附带 | minizip是一个用 C 语言编写的 zip 解压缩开源库 |
Shapelib | 1.5.0 | Shapelib是一个读取、写入和更新ESRI Shapefile 和相关属性文件 (.dbf) 的开源库 |
Spatialite | 5.0.1 | SpatiaLite是一个开源库,旨在扩展SQLite核心,从而支持成熟的 Spatial SQL 功能 |
GeoTIFF | 1.7.1 | GeoTiff利用Tiff表达Geo(地理)信息的思想,是Tiff的一种特例 |
webp | 1.2.2 | WebP(发音:weppy)是一种提供了有损压缩与无损压缩(可逆压缩)的图片文件格式 |
LZ4 | 1.9.3 | LZ4 是一种无损压缩算法 |
zstd | 1.5.2 | Zstandard也叫做zstd,是Facebook开源的一种快速无损压缩算法库 |
fontconfig | 5.1.0 | Fontconfig是一个字体配置和自定义开源库 |
libpixman | 0.40.0 | Pixman 是一个用于像素操作的低级软件库,提供图像合成和梯形光栅化等功能 |
gdal | 3.5.0 | GDAL 是一个栅格和矢量地理空间数据格式的翻译器库 |
libspatialindex | 1.9.3 | libspatialindex是一种高效的C++空间索引库 |
Expat | 2.4.8 | Expat是一个用C语言开发的、用来解析XML文档的开发库 |
libzip | 1.9.2 | libzip是一个开源C库,用于读取,创建和修改zip文件 |
protobuf | 21.2 | Protobuf (protocol buffer) 是谷歌内部的混合语言数据标准 |
exiv2 | 0.27.5 | Exiv2是一个用于管理映像元数据的跨平台c++库和命令行实用程序 |
osg | 3.6.5 | OpenSceneGraph简称OSG,是一个开源的三维引擎 |
osgearth | 3.3 | osgEarth是基于三维引擎osg开发的三维数字地球引擎库 |
二、源码截图
可自行对照着下载官网版本,有些库windows下并不好编译,可以不编译如cairo,不影响最后使用。
三、成果截图
四、OsgEarth Demo
五、源码链接
链接:https://pan.baidu.com/s/1YFftu_RzP3GKpwkH1oLXjA
提取码:a36p
总结
我用的是vs2017 64位编译,某些库cmake内没有区别debug版本和release版本,也就是最后成果名称一样不带d,可以从vs2017如下位置查看具体产出成果:
或者从连接器位置查看宏具体的输出:
编译过程中挨个去修改目标文件名称显然不现实,可以通过修改CMakeLists.txt和nmake.opt文件内的参数实现统一添加。Cmake和nmake如何加d可自行百度。