Ubuntu 16.04 LTS执行cmake ..时找不到GeographicLib报错如何解决
CMake 配置阶段找不到 GeographicLib 报错处理
该报错的核心原因是项目自带的自定义FindGeographicLib.cmake查找脚本,没有正确识别Ubuntu系统源安装的GeographicLib路径,并非实际缺少对应依赖包。
前置校验依赖安装完整性
- 执行
dpkg -L libgeographic-dev查看已安装的GeographicLib开发包的实际文件路径 - 如果查询结果中没有对应头文件、动态/静态库文件,先执行
sudo apt install libgeographic-dev补齐开发包(仅安装运行库是无法被CMake识别到的) - 经确认Ubuntu 16.04 apt源提供的1.45-2版本GeographicLib,默认安装路径为:
- 头文件目录:
/usr/include/GeographicLib - 库文件路径:x86架构下为
/usr/lib/x86_64-linux-gnu/libGeographic.so,arm架构下对应为/usr/lib/arm-linux-gnueabihf/libGeographic.so
- 头文件目录:
快速绕过查找脚本识别问题
不需要修改项目源码,直接在执行cmake ..命令时,把报错提示缺失的两个变量显式传入CMake,跳过自定义脚本的自动查找逻辑:
- 完整执行命令示例:
cmake .. -DGeographicLib_INCLUDE_DIR=/usr/include/GeographicLib -DGeographicLib_LIBRARY=/usr/lib/x86_64-linux-gnu/libGeographic.so
- 注意库文件路径要和第一步用
dpkg查到的实际软链文件名完全一致,不要硬编码带版本号的实际库文件(比如libGeographic.so.14),要指向开发包提供的无版本号软链。
自定义查找脚本适配调整
如果手动传参后仍报错,直接修改项目自带的cmake/FindGeographicLib.cmake文件:
- 定位文件里的
find_path(查找头文件)、find_library(查找库文件)命令 - 把上面查到的系统实际安装路径,加到两个命令的搜索路径列表中,解决脚本仅硬编码搜索
/usr/local路径、漏掉系统默认安装路径的问题 - 修改后删除build目录下残留的
CMakeCache.txt缓存文件,再重新执行配置命令。
常见踩坑点
- 不要混用源码编译安装的GeographicLib和apt源安装版本:如果之前在
/usr/local路径下手动编译安装过GeographicLib,要清理对应路径下的残留文件,避免查找脚本优先匹配到不完整的安装目录 - 所有依赖的版本要求已经满足:当前安装的1.45-2版本符合报错提示的最低1.45版本要求,只要路径识别正确即可通过校验,不需要升级GeographicLib版本,也不需要升级当前使用的3.5版本CMake。
内容的提问来源于stack exchange,提问作者user15166898
相关产品推荐
相关产品推荐

