安装的 eigen cmake 目标指向源包含和未安装的包含
installed eigen cmake target points to source include and not installed include
我从 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 中的错误还是我遗漏了什么?
这是由于构建 eigen 添加了这个文件(参见 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 为什么创建此文件或它有什么用,但至少现在一切正常。
我从 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 中的错误还是我遗漏了什么?
这是由于构建 eigen 添加了这个文件(参见 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 为什么创建此文件或它有什么用,但至少现在一切正常。