安装了要来源的特征cmake目标点包括但不安装

installed eigen cmake target points to source include and not installed include

本文关键字:安装 目标 包括 不安 cmake 特征      更新时间:2023-10-16

我从github安装了eigen3主分支,并通过:

安装
cmake ../eigen -DCMAKE_INSTALL_PREFIX=../install
make install

输出

-- Installing: /home/jeff/workspace/eigen/install/share/eigen3/cmake/Eigen3Targets.cmake
-- Installing: /home/jeff/workspace/eigen/install/share/eigen3/cmake/UseEigen3.cmake
-- Installing: /home/jeff/workspace/eigen/install/share/eigen3/cmake/Eigen3Config.cmake
-- Installing: /home/jeff/workspace/eigen/install/share/eigen3/cmake/Eigen3ConfigVersion.cmake
-- Installing: /home/jeff/workspace/eigen/install/include/eigen3/Eigen/Cholesky
...
然后,我通过以下方式在另一个项目中消耗了安装的eigen3 cmake目标:
find_package(Eigen3 CONFIG REQUIRED
    PATHS "/home/jeff/workspace/eigen/install/share/eigen3/cmake")
add_executable(foo foo.cpp)
target_link_libraries(foo Eigen3::Eigen)

但这为foo提供了eigen源标题(/home/jeff/workspace/eigen/eigen(,而不是安装的源头(/home/jeff/jeff/workspace/eigen/enstall/install/include/eigen3(。

这是eigen中的错误还是我错过了什么?

这是由于构建特征添加了此文件(请参阅此处(:

jeff@jeff-laptop:~$ cat ~/.cmake/packages/Eigen3/2668cceac18b59405e572a6fd3cffc86 
/home/jeff/workspace/eigen/build

因此,find_package会找到指向特征源标头而不是已安装的eigen构建配置(不指定任何额外的搜索路径(。

构建项目时,我可以添加-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON,以便find_package不调查〜/.cmake/packages。

不确定为什么eigen会创建此文件或使用什么使用,但至少它们现在按预期工作。