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

CMake构建含Eigen3的C++项目提示eigen3/Eigen/Core未找到

问题根源
  • 头文件搜索路径和引用路径重叠:你已通过编译参数-I /usr/local/include/eigen3将eigen3的根目录加入头文件搜索列表,此时编译器查找你写的#include <eigen3/Eigen/Core>时,实际拼接出的路径是/usr/local/include/eigen3/eigen3/Eigen/Core,该路径不存在,因此触发头文件找不到的报错。
  • 额外小问题:你目录结构里的源文件名为data.cpp,但Input目录的CMakeLists.txt中写的源文件名是Data.cpp,Linux、macOS等大小写敏感的系统下会出现找不到源文件的问题,需要先统一大小写。
两种解决方案

方案1(推荐):修改头文件引用写法

直接修改data.cpp中的include语句为:

#include <Eigen/Core>

这是Eigen官方推荐的标准写法,find_package导入的Eigen3::Eigen目标会自动将对应头文件路径加入搜索目录,不需要额外加eigen3/前缀,跨平台兼容性更好。

方案2:修改头文件搜索路径

如果不想改动代码中的include写法,可以将根目录CMakeLists.txt中设置Eigen头目录的语句改为:

set(EIGEN_INC_DIR  /usr/local/include)

该方案不推荐,不同发行版、不同安装方式的Eigen路径可能存在差异,硬写固定路径会降低项目的可移植性。

可优化的冗余配置

你当前Input目录的CMake配置存在冗余,既然已经通过target_link_libraries(${TARGET_LIB_INPUT} Eigen3::Eigen)链接了Eigen的导入目标,该目标会自动传递头文件搜索路径,不需要手动写include_directories(${INC_DIRS})这行配置,可以直接删除避免后续出现路径冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:15:02