代码之家  ›  专栏  ›  技术社区  ›  HaggarTheHorrible

如何编写一个C++项目的MaFe文件,它使用EGEN,C++线性代数模板库?

  •  3
  • HaggarTheHorrible  · 技术社区  · 16 年前

    <Eigen/Core>
    <Eigen/Dense>
    <Eigen/Eigen>
    

    等等。在Eigen的网页上提到,为了使用它的功能,我不必构建项目,那么如何在makefile中包含这些文件来构建项目。我的示例main.c文件如下所示。 -

    #include <Eigen/Core>
    
    // import most common Eigen types 
    USING_PART_OF_NAMESPACE_EIGEN
    
    int main(int, char *[])
    {
      Matrix3f m3;
      m3 << 1, 2, 3, 4, 5, 6, 7, 8, 9;
      Matrix4f m4 = Matrix4f::Identity();
      Vector4i v4(1, 2, 3, 4);
    
      std::cout << "m3\n" << m3 << "\nm4:\n"
        << m4 << "\nv4:\n" << v4 << std::endl;
    }
    

    4 回复  |  直到 15 年前
        1
  •  7
  •   Austin Hyde    16 年前

    根据 Eigen's website

    /usr/local/include 打开*nix/Mac),那么您所要做的就是将该位置添加到预处理器构建步骤中。

    #include <Eigen/Core> /usr/local/include/Eigen/Core ),则超级简单的makefile如下所示:

    main: main.cpp
        g++ -I /usr/local/include main.cpp -o main
    

    • main 取决于 main.cpp
    • 使 主要的 g++
      • 编译 主.cpp
      • 输出文件 主要的 ,
      • 对于任何它不知道的标题

    注意:前面有一个标签 克++ 行,不是四个空格。

    希望有帮助。

        2
  •  2
  •   DumbCoder    16 年前

    他们的文件里有这个。

    g++ -I /path/to/eigen2/ my_program.cpp -o my_program 
    
    There is no library to link to. 
    

        3
  •  1
  •   Eli    16 年前

    这些实际上是头文件。Eigen是一个模板库,遵循常见的模板实践,将定义和声明全部包含在头文件中,与将定义和声明保存在单独文件中的非模板实践类似。当减速和定义分开时,必须将包含定义的源文件构建到要链接到程序的库对象文件中。

    这在表面上已经为您完成了,仅仅是通过首先包含Eigen头文件的行为。

    只要你已经将Eigen头文件安装到你的系统include path中,它们就会被编译到你的程序中,而不需要你进行任何定制。如果您还没有将它们安装到include路径中,只需像这样提供到g++的完整路径。。。

    g++ -I /path/to/eigen2/ source_file -o output_file
    
        4
  •  0
  •   Xatan    15 年前

    如果您需要一些fortran库,下面是我使用的命令

    g++source.cpp-o输出-I/./include-L/./lib-L/./lib64-lcholmod-lmetis-lamd-lcamd-lccolamd-lclamd-llapack-lgfortran-lblas