麻烦包括来自Cmake中子目录的文件

时间:2014-04-18 09:12:15

标签: c++ cmake eigen eigen3

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

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

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

 ---------/unsupported           

 ---------signature_of_eigen3_matrix_library

在为我使用Eigen编写的项目编写CMakeLists.txt时,我按照this answer here执行了以下步骤:

  1. 创建了一个名为" cmake"的文件夹。在我的PROJECT_SOURCE_DIR中并将FindEigen3.cmake文件复制到它(该文件存在于/ usr / local / eigen3 / cmake文件夹中。)
  2. 对论坛中报告的CMakeLists.txt进行了适当的更改。
  3. 麻烦的是,在我的一个源文件中,我有一行如下:

    #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"并且它有效。这种行为的原因是什么,有没有办法绕过它,因为我有这么多的源文件,我将不得不改变这些行?此外,对这种行为的澄清对任何未来的图书馆都有帮助。

0 个答案:

没有答案