前言
我的环境是win10+vs2019+gdal3.3.2
编译步骤
1.GDAL下载
(1)GDAL下载地址
(2)GEOS(Geometry Engine, Open Source)下载地址
(3)PROJ8下载地址
注意:
1.geos官网主页
不知道为什么选择 红色框的部分,无法下载,我只好用git 下载
使用 git bash下载
git clone https://git.osgeo.org/gitea/geos/geos.git
2.使用CMake编译GEOS源码,生成GEOS.sln工程
使用vs2019打开GEOS.sln, debug和release生成lib、dll
(1)debug:
lib
dll
(2)release
lib
dll
3. proj编译
(1)proj下载地址
(2)使用CMake编译proj
发现proj需要依赖sqlit3,所以需要在CMakeLists.txt中配置sqlit3的安装路径
(3)下载sqlite
(4)编译sqlite
首先,把SQLite编译成动态链接库:
打开Visual Studio 2019,新建一个名为sqlite3的Visual C++ Win32工程,在工程向导页中选择工程的类型为 “DLL”, 并且把创建为空项目的复选框钩上。通过工程—>添加现有项…,把单一文件sqlite3.c添加到工程中。为了生成在链接sqlite3.dll时需要用到的lib文件,需要在工程中添加模块定义文件。根据sqlite3.h中列出的导出函数名
然后,把sqlite3.def文件拷贝到sqlite3工程下
最后生成sqlite3.dll和sqlite3.lib
(5)编译proj
使用CMake生成工程
(6)使用conda编译gdal
gdal编译官方说明
翻译成中文:
a .下载git
b. 下载 miniconda
c. 然后再c盘创建dev目录
d.使用miniconde
e. 输入 “y”
f: 再输入:conda activate gdal
然后再输入
g:conda install --yes --quiet curl libiconv icu git python=3.7 swig numpy pytest zlib clcache
h:输入conda install --yes --quiet -c conda-forge compilers
i:conda install --yes --quiet -c conda-forge
cmake proj geos hdf4 hdf5
libnetcdf openjpeg poppler libtiff libpng xerces-c expat libxml2 kealib json-c
cfitsio freexl geotiff jpeg libpq libspatialite libwebp-base pcre postgresql
sqlite tiledb zstd charls cryptopp cgal jasper librttopo libkml openssl xz
注意:这里有换行符,如果直接复制到conda中,只能识别到第一行,解决办法把这行命令复制到txt文本中,并把反斜杠换行符去掉,组成一行命令,如下:
conda install --yes --quiet -c conda-forge cmake proj geos hdf4 hdf5 libnetcdf openjpeg poppler libtiff libpng xerces-c expat libxml2 kealib json-c cfitsio freexl geotiff jpeg libpq libspatialite libwebp-base pcre postgresql sqlite tiledb zstd charls cryptopp cgal jasper librttopo libkml openssl xz
然后把这行命令复制到conda中:然后回车
这里要经过漫长等待,大概1个小时左右,取决于各位看官老爷的网速哈,可以看到,conda是要下载相关的依赖库
然后:完成后,后自conda会自动切换到vs2017的路径
敲命令:cd c:\dev
然后敲命令:
git clone https://github.com/OSGeo/gdal.git
最重要的要来了,编译gdal,生成sln工程:
敲命令
cd c:\dev\gdal
敲命令:
cmake -S . -B build -DCMAKE_PREFIX_PATH:FILEPATH="%CONDA_PREFIX%"
-DCMAKE_C_COMPILER_LAUNCHER=clcache
-DCMAKE_CXX_COMPILER_LAUNCHER=clcache
这里同样注意:把这段命令复制到txt文本中,去掉反斜杠,写成一行:
cmake -S . -B build -DCMAKE_PREFIX_PATH:FILEPATH="%CONDA_PREFIX%" -DCMAKE_C_COMPILER_LAUNCHER=clcache -DCMAKE_CXX_COMPILER_LAUNCHER=clcache
然后敲命令:
cmake --build build --config Release -j 8
这样就会成gdal.sln工程,(如果运气好的话,哈哈),我这里运气不好,报了一大堆错,
虽然不能直接生成gdal.sln工程,好在生成了CMakeLists.txt文件,
我只好用CMake生成gdal.sln工程
有个警告,不知道为什么,先忽略
这里有2个错误,估计是CMake没有识别到zlib的头文件和库,那么,我们就在CMake中指定zlib的头文件和lib
包含zlib的头文件和lib