安装了特征cmake目标点到源包含和未安装包含

时间:2018-03-31 22:31:18

标签: c++ cmake eigen eigen3

我从github安装了eigen3 master分支,并通过以下方式安装:

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特征源头(/ home / jeff / workspace / eigen / eigen),而不是已安装的(/ home / jeff / workspace / eigen / install / include / eigen3)。

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

1 个答案:

答案 0 :(得分:0)

这是因为建立了特征添加此文件(请参阅here):

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

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

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

不确定为什么eigen会创建这个文件或者它有什么用途,但至少它现在都按预期工作了。