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

Windows下CMake编译Ceres时find_package无法识别Eigen路径问题

问题解答

1. find_package指定路径的正确方式

不建议修改第三方库(ceres-solver)的CMakeLists.txt,容易引发后续版本同步冲突,优先选择以下两种无侵入方式:

  • CMake-gui操作:第一次Configure报错后,直接在gui的变量列表中手动填写对应包的_DIR变量即可,无需修改系统环境变量
  • 命令行操作:执行cmake命令时添加参数 -DEigen3_DIR=你的目标路径
    如果确实需要全局生效,也可以配置Windows系统环境变量,但会影响所有cmake项目的包查找逻辑,不推荐。

2. Windows下路径配置规则

你之前指定的路径有误:

  • 必须指向Eigen3Config.cmake所在的精确目录,对应你本地的路径为 E:/Code/libs/eigen-3.3.9/cmake,而非eigen的根目录
  • 路径格式方面:CMake在Windows下同时支持正斜杠和反斜杠,若使用反斜杠写在CMakeLists字符串中需要转义为\\,更推荐使用正斜杠避免转义问题;路径不含空格时引号可加可不加,含空格必须加引号。

3. find_package的搜索规则

find_package的Config模式(当前查找Eigen3使用的模式)不会递归搜索子目录,必须直接指向存放xxxConfig.cmake配置文件的精确目录,只会在该层级直接查找对应配置文件。


快速解决步骤

  1. 打开CMake-gui,选中ceres-solver的源码目录和构建目录,点击顶部菜单 File -> Delete Cache 清空历史缓存
  2. 第一次点击Configure,选择对应Visual Studio版本和目标平台,等待报错
  3. 在变量列表中找到Eigen3_DIR条目,将值修改为 E:/Code/libs/eigen-3.3.9/cmake
  4. 再次点击Configure即可解决Eigen找不到的问题,后续正常执行Generate生成VS工程即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 15:18:03