GDAL 3.7.0 CMake构建问题:满足PROJ版本要求却缺失PROJ_LIBRARY
解决VS2019环境下CMake构建GDAL 3.7.0时PROJ_LIBRARY缺失问题
以下是针对你遇到的PROJ已检测到但CMake提示缺失PROJ_LIBRARY问题的具体解决步骤:
确认PROJ安装完整性
PROJ 6.3.2必须安装完整的开发包,不能只装运行时。检查你的PROJ安装目录下是否有:include文件夹,包含proj.h等头文件lib文件夹,包含proj.lib(静态库)或proj.dll+proj.lib(动态库导入库)
同时确保安装路径没有中文、空格或特殊字符,比如优先选择D:\PROJ\6.3.2这类路径。
手动指定PROJ路径给CMake
CMake自动检测PROJ时可能因为路径或命名问题漏识别库文件,手动指定变量可以解决:- 如果用CMake GUI:
- 在点击「Configure」前,点击「Add Entry」,分别添加:
- 变量名
PROJ_INCLUDE_DIR,类型PATH,值为PROJ的include目录(如D:\PROJ\6.3.2\include) - 变量名
PROJ_LIBRARY,类型FILEPATH,值为PROJ的库文件路径(如D:\PROJ\6.3.2\lib\proj.lib)
- 变量名
- 添加完成后再执行「Configure」,此时CMake会优先使用你指定的路径。
- 在点击「Configure」前,点击「Add Entry」,分别添加:
- 如果用命令行构建:
执行cmake时通过-D参数传递路径,注意匹配VS2019的平台(x64/x86):cmake -G "Visual Studio 16 2019" -A x64 -DPROJ_INCLUDE_DIR=D:\PROJ\6.3.2\include -DPROJ_LIBRARY=D:\PROJ\6.3.2\lib\proj.lib ../gdal-source
注意:PROJ的库平台必须和你要构建的GDAL平台一致,不能用x86的PROJ库构建x64的GDAL。
- 如果用CMake GUI:
清理CMake缓存后重新配置
之前的配置缓存可能残留错误信息,导致新的变量不生效。在CMake GUI中点击「Delete Cache」,然后重新执行「Configure」和「Generate」;命令行的话直接删除build目录下的所有文件后重新运行cmake命令。排查PROJ库命名匹配问题
少数情况下,PROJ的库文件名可能和GDAL的FindPROJ.cmake脚本期望的不一致(比如有些版本会生成proj_6_3.lib)。你可以打开GDAL源码目录下的cmake/FindPROJ.cmake,找到查找库的代码段,修改库名称的匹配规则,或者直接把PROJ的库文件重命名为脚本期望的名字(比如proj.lib)。验证构建结果
生成VS2019项目文件后,打开.sln编译,确保没有链接错误。编译完成后,记得把PROJ的proj.dll复制到GDAL生成的可执行文件或库文件所在目录,避免运行时缺失依赖。
内容的提问来源于stack exchange,提问作者Rex
相关产品推荐
相关产品推荐

