1

我对 cmake 很陌生,因此无法真正理解将我的疑问与一些现有问题联系起来是否合适。以防万一,可以随意将其合并到适当的问题中。

我在我的系统上安装了 Eigen 库。包含文件位于 /usr/local/include/eigen3 中。上述目录的结构如下:

/eigen3                                                                                     
 --------/Eigen

 ---------/unsupported           

 ---------signature_of_eigen3_matrix_library

在为我使用 Eigen 编写的项目编写 CMakeLists.txt 时,我按照此处的答案执行了以下步骤:

  1. 在我的 PROJECT_SOURCE_DIR 中创建了一个名为“cmake”的文件夹并将 FindEigen3.cmake 文件复制到其中(该文件存在于 /usr/local/eigen3/cmake 文件夹中。)
  2. 如论坛中所述,对我的 CMakeLists.txt 进行了适当的更改。

问题是在我的一个源文件中,我有如下一行:

#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"它并且它可以工作。这种行为的原因是什么,有没有办法绕过它,因为我有很多源文件,我必须在其中更改这些行?此外,对这种行为的澄清也将有助于任何未来的图书馆。

4

0 回答 0