windows下编译GDAL记录
背景
这应该是今年最后一个帖子了,由于准备在java中使用gdal,而现在各种预编译版本中一般没有java的支持,需要自己编译。上班时用的 Linxu系统,很好编译,基本配置好环境,一个make就可以了,但是回家为了玩儿会儿游戏用的 Windows 系统,编译就比较曲折了,这里记录一下。
如果不需要java等支持,可以直接使用Conda的方式安装 |
1. 使用版本
-
Visual Studio 2017
-
sqlite3 3.34.0
-
proj 6.3.2
-
gdal 3.1.4
2. 编译流程
sqlite → proj → gdal
3. 安装 Visual Studio 2017
这里安装的 Visual Studio 2017 的 Community 版本,这个版本自己用足够了,只安装的 c++ 支持,网络安装,还好网比较快,大概半个小时安装完成,不再细说
4. 编译 sqlite3
安装这里有点坑,看其他帖子,很多写的是直接下载dll那个,但是我没测试成功过,且提供的编译好的exe只有32位,而proj编译需要exe文件
折腾了小半天后决定自己安装,直接下载 源码
先要安装 Tcl ActiveTcl下载地址
安装完成后编译
编译时参考的 这里
其实就是在vs控制台环境里面执行 nmake /f Makefile.msc TOP=..\sqlite
, exe 等文件就会生成到本页面。这时proj和gdal基本就可以用这个文件夹了。
5. 编译 proj
这里使用的是 Cmake 编译,可以使用 cmake 的ui进行简单操作
config报错后修改以下几项
-
EXE_SQLITE3 : D:/Codes/sqlite/sqlite3.exe
-
SQLITE3_INCLUDE_DIR : D:\Codes\sqlite
-
SQLITE3_LIBRARY : D:/Codes/sqlite/sqlite3.lib
可选修改项:
-
CMAKE_INSTALL_PREFIX : D:\Work\proj
修改后在页面执行 Generate → Open Project 打开vs工程
vs 工程中可直接在 生成 → 批生成
中选择 ALL_BUILD 和 INSTALL 的 Release|x64 项目,执行后会直接把工程输出到 CMAKE_INSTALL_PREFIX 设置的路径中。这里基本完成 proj 的编译
6. 编译 GDAL
这里暂时编译最简版本,以后需要再扩展编译
直接 下载gdal源码,gdal直接支持nmake编译,会比sqlite和proj简单点,不过编译过程需要几个项目的参与,需要另外下载,我目前需要的有:
下载后可修改gdal源码中的 nmake.opt 文件,或直接在参数中指定。然后执行下面语句:
nmake -f makefile.vc MSVC_VER=1910 WIN64=1 GDAL_HOME=D:\Work\gdal_3.1.4 PROJ_INCLUDE=-ID:\Work\proj_6.3.2\include PROJ_LIBRARY=D:\Work\proj_6.3.2\lib\proj.lib SQLITE_INC=-ID:\Work\sqlite SQLITE_LIB=D:\Work\sqlite\sqlite3.lib BINDINGS=java install
最后加上 install 才会把编译好的输出到 GRADLE_HOME ,这里他的示例都没写
|
编译完成后就可以在 GRADLE_HOME
中看到编译好的可执行文件了
另:编译后的好像没找到 jni
相关的dll,明年再看了。
祝大家新年快乐!