目的
在Windows Server2012 R2環(huán)境下編譯安裝Cesium Terrain Builder
1.依賴
GDAL
ZLIB
MSVC 2019
CMAKE
2.編譯安裝依賴
2.1.編譯安裝GDAL
因?yàn)镃esium Terrain Builder依賴GDAL,因此使用MSVC2019 編譯安裝GDAL2.4.2
1.下載GDAL2.4.2源代碼到本機(jī)后解壓縮,保證路徑?jīng)]有空格/中文或特殊字符;
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
,進(jìn)入源代碼文件夾下,輸入nmake -f makefile.vc MSVC_VER=1910 WIN64=1
開始進(jìn)行編譯;
4.待編譯完成后依次輸入
nmake -f makefile.vc install
nmake -f makefile.vc devinstall
5.編譯中問(wèn)題
運(yùn)行nmake -f makefile.vc devinstall
命令后發(fā)現(xiàn)安裝路徑的include,lib,html
等文件夾變成文件,刪除本應(yīng)該是文件夾的相關(guān)文件,然后建立同名空文件夾,重新運(yùn)行nmake -f makefile.vc devinstall
命令
2.2.配置zlib
zlib可直接下載編譯好的64位的dll文件,結(jié)合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動(dòng)態(tài)庫(kù)所在文件夾,ZLIB_LIBRARY_DEBUG , ZLIB_LIBRARY_RELEASE
是zlib的.lib文件。配置完成后點(diǎn)擊Configure,選擇編譯平臺(tái)為MSVC2019,然后點(diǎn)擊Generate,即可在build路徑下生成MSVC2019的sln工程文件。
3.2 MSVC2019編譯
使用MSVC2019打開上一步生成的sln文件,點(diǎn)擊生成,分別在src和tool的Debug文件夾下獲得編譯成功的exe文件。
3.3 安裝CTB
新建一文件夾,將上一步生成exe文件和zlib庫(kù)放在該文件夾下,打開CMD命令行,輸入ctb-info.exe --version
,若返回ctb版本號(hào),則說(shuō)明安裝成功。
20190801更新
原先安裝的Cesium Terrain Builder沒有提供生成layer.json的功能,發(fā)布Terrain切片后因?yàn)槿鄙賚ayer.json描述信息導(dǎo)致Cesium請(qǐng)求失敗,因此從ahuarte47/cesium-terrain-builder該庫(kù)下載了新的源代碼,參照以上編譯步驟進(jìn)行編譯,需要注意的是在前文步驟3.2中使用MSVC2019編譯時(shí),MSVC2019報(bào)錯(cuò)
錯(cuò)誤 **LNK2019** 無(wú)法解析的外部符號(hào) "class GDALDataset * __cdecl GDALCreateOverviewDataset(class GDALDataset *,int,int)" (?GDALCreateOverviewDataset@@YAPAVGDALDataset@[@pav1](https://github.com/pav1)@HH@Z),該符號(hào)在函數(shù) "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
此時(shí)可將GDAL源代碼中的gdaloverviewdataset.cpp
文件復(fù)制到ctb項(xiàng)目下,重新生成后即可成功編譯。
github issue上的此問(wèn)題詳情