目的
在Windows Server2012 R2环境下编译安装Cesium Terrain Builder
1.依赖
GDAL
ZLIB
MSVC 2019
CMAKE
2.编译安装依赖
2.1.编译安装GDAL
因为Cesium Terrain Builder依赖GDAL,因此使用MSVC2019 编译安装GDAL2.4.2
1.下载GDAL2.4.2源代码到本机后解压缩,保证路径没有空格/中文或特殊字符;
2.修改nmake.opt文件,将191行附近的#WIN64=YES
改为WIN64=YES
,57行附近的GDAL_HOME = "C:\warmerda\bld"
修改为GDAL_HOME = "C:\gdal"
;
3.双击MSVC2019的命令行工具x64 Native Tools Command Prompt for VS 2019
,进入源代码文件夹下,输入nmake -f makefile.vc MSVC_VER=1910 WIN64=1
开始进行编译;
4.待编译完成后依次输入
nmake -f makefile.vc install
nmake -f makefile.vc devinstall
5.编译中问题
运行nmake -f makefile.vc devinstall
命令后发现安装路径的include,lib,html
等文件夹变成文件,删除本应该是文件夹的相关文件,然后建立同名空文件夹,重新运行nmake -f makefile.vc devinstall
命令
2.2.配置zlib
zlib可直接下载编译好的64位的dll文件,结合zlib源代码中的zlib.h,zconf.h文件,将zlib.h , zconf.h , zlibwapi.dll , zlibwapi.lib
放在同一文件夹中即可。
3.编译安装CTB
3.1.cmake配置
打开cmake gui,配置source code路径和build路径,勾选Advanced
配置
GDAL_INCLUDE_DIR
为GDAL编译后的include文件夹,GDAL_LIBRARY
为GDAL编译后的.lib文件;配置
ZLIB_INCLUDE_DIR
是zlib动态库所在文件夹,ZLIB_LIBRARY_DEBUG , ZLIB_LIBRARY_RELEASE
是zlib的.lib文件。配置完成后点击Configure,选择编译平台为MSVC2019,然后点击Generate,即可在build路径下生成MSVC2019的sln工程文件。
3.2 MSVC2019编译
使用MSVC2019打开上一步生成的sln文件,点击生成,分别在src和tool的Debug文件夹下获得编译成功的exe文件。
3.3 安装CTB
新建一文件夹,将上一步生成exe文件和zlib库放在该文件夹下,打开CMD命令行,输入ctb-info.exe --version
,若返回ctb版本号,则说明安装成功。
20190801更新
原先安装的Cesium Terrain Builder没有提供生成layer.json的功能,发布Terrain切片后因为缺少layer.json描述信息导致Cesium请求失败,因此从ahuarte47/cesium-terrain-builder该库下载了新的源代码,参照以上编译步骤进行编译,需要注意的是在前文步骤3.2中使用MSVC2019编译时,MSVC2019报错
错误 **LNK2019** 无法解析的外部符号 "class GDALDataset * __cdecl GDALCreateOverviewDataset(class GDALDataset *,int,int)" (?GDALCreateOverviewDataset@@YAPAVGDALDataset@[@pav1](https://github.com/pav1)@HH@Z),该符号在函数 "void * __cdecl getOverviewDataset(void *,int (__cdecl*)(void *,int,int,double *,double *,double *,int *),void *)" (?getOverviewDataset@@YAPAXPAXP6AH0HHPAN11PAH@Z0@Z) 中被引用 ctb D:\cesium-terrain-builder-master-quantized-mesh\build\src\GDALTiler.obj 1
此时可将GDAL源代码中的gdaloverviewdataset.cpp
文件复制到ctb项目下,重新生成后即可成功编译。
github issue上的此问题详情