在 C++ 中,是否可以包含文件夹的所有子文件夹中的所有标头?

hus*_*sik 0 c++ include eigen

#include <iostream>
#include<eigen3/Eigen/src/Core/Matrix.h> // does not define Eigen::StorageOptions

// need something like this
#include<eigen3/Eigen/src/ everything_in_here >

int main()
{
    Eigen::Matrix<double,2,2> mat;
    std::cout << mat(0,0) <<std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在那里,我试图构建一个矩阵对象,它总是询问 6 个模板参数并带有错误消息:

模板参数数量错误(3,应该是 6)

所以我开始添加它们,第四个是Eigen::StorageOptions并且没有在Matrix.h标头中定义。另外,还有太多的标题需要搜索。那么,我可以将所有文件包含在一个文件中吗#include

cht*_*htz 8

您不应该Eigen/src/...直接包含任何内容。如果您只需要 Eigen 的核心组件,请使用

#include <Eigen/Core>
Run Code Online (Sandbox Code Playgroud)

如果您想包含与密集矩阵运算相关的所有内容(例如,分解和几何模块):

#include <Eigen/Dense>
Run Code Online (Sandbox Code Playgroud)

如果您还想包含 Sparse 模块

#include <Eigen/Sparse>
// or this to include Dense+Sparse:
#include <Eigen/Eigen>
Run Code Online (Sandbox Code Playgroud)

您应该通过编译选项确保顶级 Eigen 目录位于您的包含路径中,例如在许多 Linux 环境中,-I/usr/include/eigen3作为参数添加。您的 IDE 可能也有一个选项。如果您使用 CMake 之类的东西,则会出现很多相关问题。

如果出于某种原因这不起作用或者您只需要一个快速而肮脏的解决方法,您可以编写

#include <eigen3/Eigen/Core> //etc
Run Code Online (Sandbox Code Playgroud)