我对cmake很新,因此无法真正理解将我的疑问与某些现有问题联系起来是否合适。如果是,可以随意将其合并到一个合适的问题中。
我在我的系统上安装了Eigen Library。包含文件位于/ usr / local / include / eigen3中。上述目录的结构如下:
/eigen3
--------/Eigen
---------/unsupported
---------signature_of_eigen3_matrix_library
在为我使用Eigen编写的项目编写CMakeLists.txt时,我按照this answer here执行了以下步骤:
麻烦的是,在我的一个源文件中,我有一行如下:
#include"Eigen/Dense"
当我尝试运行CMake生成的makefile时,我得到的错误是它找不到Eigen / Dense。我不明白这一点,因为Eigen / Dense就在FindEigen3.cmake找到的EIGEN3_INCLUDE_DIR中 为了避免这个问题,我必须修改CMakeLists.txt中的以下行
include_directories(${EIGEN3_INCLUDE_DIR})
到
include_directories(${EIGEN3_INCLUDE_DIR}/Eigen)
然后我可以简单地写#include"Dense"
并且它有效。这种行为的原因是什么,有没有办法绕过它,因为我有这么多的源文件,我将不得不改变这些行?此外,对这种行为的澄清对任何未来的图书馆都有帮助。