Vcpkg构建C++ GIS应用时缺失GDAL头文件cpl_zlib_header.h
解决vcpkg安装GDAL 3.6.3后缺失cpl_zlib_header.h的问题
这个问题本质是vcpkg的GDAL port构建脚本没有将cpl_zlib_header.h纳入安装清单,导致它未被复制到vcpkg\installed\x64-windows\include目录。可以按以下方式处理:
临时应急修复
直接手动复制文件快速解决编译问题:
- 找到vcpkg下载的GDAL源码解压路径(通常在
vcpkg\buildtrees\gdal\src\<版本号>-<哈希值>\include目录下) - 把
cpl_zlib_header.h复制到vcpkg\installed\x64-windows\include
注意:这种方法只是临时救急,下次重装或更新GDAL时会失效。
永久修复(修改vcpkg的GDAL构建配置)
编辑vcpkg的GDAL port脚本,让它自动安装这个头文件:
- 打开
vcpkg\ports\gdal\portfile.cmake - 找到安装头文件的代码块,通常是类似
file(INSTALL ... DESTINATION ${CURRENT_PACKAGES_DIR}/include)或者install(FILES ...)的语句 - 将
cpl_zlib_header.h添加到需要安装的头文件列表中 - 重新运行构建命令:
vcpkg install gdal:x64-windows --recurse
这会让vcpkg重新编译GDAL,并将这个头文件正确安装到include目录。
额外检查
如果你的代码是直接包含cpl_zlib_header.h的,建议改成包含GDAL的公共头文件(比如gdal.h)。因为cpl_zlib_header.h属于GDAL内部头文件,正常情况下应该通过公共头文件间接引入,直接引用可能会因为GDAL版本变更出现兼容性问题。
内容的提问来源于stack exchange,提问作者voronoidea
相关产品推荐
相关产品推荐

