0、背景
GDAL目前已经更新到3.5版本,也支持了cmake的编译配置。但因开发环境限制于VS2015,所以本文选用GDAL3.2版本运用nmake进行编译配置,用到的相关库也选用了对应的兼容版本。
本文使用的库的相关版本如下:
- GDAL3.2.0
- CURL7.73.0
- TIFF4.2.0
- PROJ6.3.2
- SQLITE3.36.0
- GEOS3.7.5
1、sqlite3库
打开SQLite官网下载界面,可以看到多种压缩包供下载,现介绍以下五种:
- sqlite-amalgamation-3390200.zip: sqlite3源码包Amalgamation版本(混合版)。sqlite3源代码库总共大概有100多个C文件,所谓Amalgamation版本,即是把这100多个C文件合并到了一个sqlite3.c文件中了。
- sqlite-doc-3390200.zip: sqlite3的相关文档
- sqlite-dll-win32-x86-3390200.zip: Windows平台预编译32位版动态链接库
- sqlite-dll-win64-x64-3390200.zip: Windows平台预编译64位版动态链接库
- sqlite-src-3390200.zip: sqlite3源码包(原始版)
这里我们可以有如下三种方式来编译sqlite3,生成我们想要的sqlite3.lib以及sqlite3.dll:
- 基于预编译好的sqlite3动态链接库生成sqlite3.lib,以及sqlite3.h头文件
- 基于Amalgamation源代码编译sqlite3.lib以及sqlite3.dll
- 基于sqlite3源码编译sqlite3.lib以及sqlite3.dll
说明: 如果没有特殊要求,可直接下载sqlite-dll-xxx.zip内的dll,如果不放心就自己编译。正常情况下建议直接下载sqlite-dll-xxx.zip来使用
下面我们分别介绍。
a.基于预编译好的动态链接库来编译
打开下载的sqlite-dll-win64-x64-3390200.zip文件,通过内部的.def文件和.dll文件生成对应的sqlite3.lib。
# lib /def:sqlite3.def //采用缺省的方式生成lib库(32位版)
# lib /def:sqlite3.def /machine:x86 //明确指定生成x86版本的lib库
# lib /def:sqlite3.def /machine:x64 //明确指定生成x64版本的lib库 (我们这里用此命令)
运行上述对应命令即可生成.lib文件。
b.基于sqlite3 Amalgamation版源代码编译
此方法网上一搜一大把,在此不做赘述。即通过sqlite3.c、sqlite3.h、sqlite3ext.h、sqlite3.def等文件建立工程并编译。
c.基于sqlite3源码编译
因为sqlite官网上只能找到最新版本的预编译文件(可能我没找到),所以如果要使用老版本的sqlite必须要通过源码编译。
安装tcl
虽然sqlite3本身并不依赖tcl,但是编译时会用到tcl工具,这里我们可以到tcl官网去下载安装。这里我们安装ActiveTcl 8.6
版本。安装步骤较为简单,这里不做介绍。
编译sqlite3源码
首先解压sqlite-src-3290000.zip,然后以管理员身份运行“VS2015 开发人员命令提示”,然后切换到上面的解压目录,执行如下命令:
# nmake /f Makefile.msc TOP=..\sqlite
# nmake /f Makefile.msc clean TOP=..\sqlite
整理编译得到文件
最后整理一下编译得到的文件。新建文件夹sqlite
,其中新建子文件夹bin
,include
和lib
,将文件整理进去,最后得到的文件目录如下
|-- sqlite
|-- bin
| |-- SQLite.exe
|-- include
| |-- sqlite3.h
| |-- sqlite3ext.h
|-- lib
|-- SQLite.lib
2、curl库
针对curl库依然是下载git仓库源码,然后切换到自己想要的版本,最后通过CMake编译。这里不做过多介绍。
3、libtiff库
libtiff下载
Libtiff是一个用来读写TIFF图片的库,在GDAL中主要用于tiff格式栅格图像的读取与写入。
官网或镜像站下载libtiff各版本压缩包,在此为了适配较低版本的gdal库,我们选择不那么新的4.2.0版本。
libtiff编译
解压下载的压缩包,打开cmake-GUI,选择tiff源码目录和待输出目录,如下:
配置并生成VS工程,生成工程后编译ALL_BUILD和INSTALL工程。
上述步骤完成后将在预先设置的生成目录成功生成相关库文件,如下:
4、Geos库
同curl直接cmake配置编译,操作流程如下图:
最后编译成功如下:
5、proj6
proj6下载
根据需要选择对应版本即可,这里我下载的是proj6的最后一个版本6.3.2。
proj6编译
手动创建proj_install便于存放后面生成的proj库。
编译proj6库需要依赖前面编译的sqlite库,在cmake界面程序中打开并修改sqlite相关目录和proj待输出目录,如下:
6、GDAL3.2.0编译
编译好了上面的5个依赖库,最后来编译GDAL。
文件下载
下载GDAL3.2.0,两种方式,官网或git仓库并用git checkout -tag
命令切换为想要的版本。
编译
生成VS项目
以管理员权限打开VS2015 x64 Native Tools Command Prompt
。进入解压后的文件夹,运行generate_vcxproj.bat。根据提示,生成VS2015项目文件:
修改nmake.opt文件
参考:https://blog.csdn.net/FL1623863129/article/details/120467213
开始编译
在VS2015 x64 Native Tools Command Prompt
命令行窗口中,输入以下指令:
nmake -f makefile.vc MSVC_VER=1900 WIN64=1 ANALYZE=1 WITH_PDB=1
nmake -f makefile.vc MSVC_VER=1900 WIN64=1 install
nmake -f makefile.vc MSVC_VER=1900 WIN64=1 devinstall
第一行命令用于编译带调试信息的GDAL库;
第二行命令用于编译GDAL库,并将生成的dll和exe等文件复制到先前设置的输出目录;
第三行命令用于编译GDAL库,并将开发用的include和lib文件夹复制到输出目录。
至此,GDAL3.2.0编译完毕。
参考文章
「如果这篇文章对你有用,请随意打赏」
如果这篇文章对你有用,请随意打赏
使用微信扫描二维码完成支付

comments powered by Disqus