You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake未生成Eigen3配置文件,ORB-SLAM3编译失败求助

ORB-SLAM3部署中Eigen3 3.2.1配置问题解答

问题背景

在本地虚拟机部署ORB-SLAM3时,因系统包管理器默认的Eigen3 3.4.4版本与代码存在兼容性问题,手动编译安装了Eigen3 3.2.1。已完成Pangolin(指定commit版本)和OpenCV 3.2.0的安装,/usr/local/include目录下包含eigen3、opencv、opencv2、pangolin头文件目录,但/usr/local/lib/cmake仅存在Pangolin的配置文件。运行ORB-SLAM3的build.sh时,CMake报错无法找到Eigen3的配置文件。

疑问解答

1. 为何相同编译安装命令能生成Pangolin的配置文件,却无法生成Eigen3的?

Eigen3是纯头文件库,3.2.1这类早期版本默认不会生成Eigen3Config.cmake这类CMake配置文件,其安装过程仅负责将头文件复制到指定目录。而Pangolin是包含二进制库的项目,CMake在安装阶段会自动生成并安装配套的配置文件,用于其他CMake项目查找依赖。

2. 为何OpenCV配置文件不在/usr/local/lib/cmake但CMake能检测到?

CMake查找依赖包时,会默认搜索多个标准路径,除了/usr/local/lib/cmake,还包括/usr/local/share/<PackageName>这类路径。OpenCV 3.2.0的配置文件默认安装在/usr/local/share/OpenCV,该路径属于CMake的默认搜索范围,因此ORB-SLAM3的CMake能自动定位到OpenCV_DIR并识别版本。

解决Eigen3配置问题的方案

针对Eigen3 3.2.1无自带配置文件的情况,可通过以下两种方式解决:

方案1:直接指定头文件路径

修改ORB-SLAM3根目录下的CMakeLists.txt,替换原有的find_package(Eigen3 REQUIRED)语句,直接添加Eigen3的头文件目录:

# 替换原find_package(Eigen3 REQUIRED)
include_directories(/usr/local/include/eigen3)

方案2:手动生成CMake配置文件

  1. 创建Eigen3Config.cmake文件,内容如下:
set(Eigen3_FOUND TRUE)
set(Eigen3_VERSION 3.2.1)
set(Eigen3_INCLUDE_DIRS /usr/local/include/eigen3)
set(Eigen3_INCLUDE_DIR /usr/local/include/eigen3)
set(Eigen3_LIBRARIES "")
set(Eigen3_LIBRARY "")
  1. 将文件放到指定目录:
sudo mkdir -p /usr/local/lib/cmake/Eigen3
sudo cp Eigen3Config.cmake /usr/local/lib/cmake/Eigen3/

完成后重新运行ORB-SLAM3的build.sh即可。


内容的提问来源于stack exchange,提问作者barkin sagan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 16:32:04