已安装的Eigen CMake目标指向源码include而非安装路径的问题
解决Eigen3安装后CMake目标指向源码目录的问题
我来帮你搞定这个问题——你遇到的情况其实是Eigen的CMake配置在构建过程中容易踩的一个小坑,尤其是在使用master分支的时候。
问题根源
Eigen的CMake脚本默认会在构建阶段记录源码路径,如果你之前的构建目录有残留缓存,或者没有明确指定安装目标的生成参数,就会导致安装后的Eigen3Targets.cmake仍然指向源码里的include目录,而不是你指定的../install路径。
分步解决方案
彻底清理旧构建目录的缓存
残留的CMake缓存是这类路径问题的常见元凶,先清空你的构建目录:# 切换到你之前执行cmake的构建目录 cd ../build rm -rf *重新配置CMake,添加关键参数
重新运行cmake时,需要明确开启安装目标的生成,确保CMake正确识别你的安装前缀:cmake ../eigen -DCMAKE_INSTALL_PREFIX=../install -DEIGEN_BUILD_INSTALLTARGETS=ON -DCMAKE_BUILD_TYPE=Release这里的
-DEIGEN_BUILD_INSTALLTARGETS=ON是核心,它会强制CMake生成指向安装路径的目标配置,而不是复用源码路径。重新执行安装
最后重新编译并完成安装:make install
验证结果
安装完成后,打开../install/share/eigen3/cmake/Eigen3Targets.cmake文件,查找INTERFACE_INCLUDE_DIRECTORIES这一行,现在它应该指向../install/include/eigen3,而不是你之前的Eigen源码目录了。
另外提个小建议:Eigen的master分支是开发分支,可能存在一些未稳定的配置,如果你不需要最新的开发特性,建议切换到稳定版本(比如3.4.x分支)来安装,能减少这类奇怪的配置问题。
内容的提问来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

