Eigen在Qt中的配置(博主亲测)

文章目录

  • 1. 说明
  • 2. 配置过程

请直接跳转 → 2.配置过程

1. 说明

  • Eigen官网:http://eigen.tuxfamily.org
  • Eigen代码托管:https://gitlab.com/libeigen/eigen

本文使用Eigen版本为Eigen3 3.1.2,文件结构如下所示:

├─bench
│  ├─btl
│  │  ├─actions
│  │  ├─cmake
│  │  ├─data
│  │  ├─generic_bench
│  │  │  ├─init
│  │  │  ├─static
│  │  │  ├─timers
│  │  │  └─utils
│  │  └─libs
│  │      ├─BLAS
│  │      ├─blitz
│  │      ├─eigen2
│  │      ├─eigen3
│  │      ├─gmm
│  │      ├─mtl4
│  │      ├─STL
│  │      ├─tvmet
│  │      └─ublas
│  └─spbench
├─blas
│  └─testing
├─cmake
├─debug
│  ├─gdb
│  └─msvc
├─demos
│  ├─mandelbrot
│  ├─mix_eigen_and_c
│  └─opengl
├─doc
│  ├─examples
│  ├─snippets
│  └─special_examples
├─Eigen
│  └─src
│      ├─Cholesky
│      ├─CholmodSupport
│      ├─Core
│      │  ├─arch
│      │  │  ├─AltiVec
│      │  │  ├─Default
│      │  │  ├─NEON
│      │  │  └─SSE
│      │  ├─products
│      │  └─util
│      ├─Eigen2Support
│      │  └─Geometry
│      ├─Eigenvalues
│      ├─Geometry
│      │  └─arch
│      ├─Householder
│      ├─IterativeLinearSolvers
│      ├─Jacobi
│      ├─LU
│      │  └─arch
│      ├─misc
│      ├─OrderingMethods
│      ├─PardisoSupport
│      ├─PaStiXSupport
│      ├─plugins
│      ├─QR
│      ├─SparseCholesky
│      ├─SparseCore
│      ├─StlSupport
│      ├─SuperLUSupport
│      ├─SVD
│      └─UmfPackSupport
├─failtest
├─lapack
├─scripts
├─test
│  └─eigen2
└─unsupported
    ├─doc
    │  ├─examples
    │  └─snippets
    ├─Eigen
    │  └─src
    │      ├─AutoDiff
    │      ├─BVH
    │      ├─FFT
    │      ├─IterativeSolvers
    │      ├─KroneckerProduct
    │      ├─MatrixFunctions
    │      ├─MoreVectorization
    │      ├─NonLinearOptimization
    │      ├─NumericalDiff
    │      ├─Polynomials
    │      ├─Skyline
    │      ├─SparseExtra
    │      └─Splines
    └─test
        └─mpreal

从上结构树可以看出,代码主要位于Eigen文件夹下,熟悉文件结构对于我们正确引用头文件有帮助。

2. 配置过程

解压压缩包,在*.pro文件中配置包含路径,以博主为例,将其置于G:\CodeBase\下,并修改文件夹名称为eigen_3_1_2

INCLUDEPATH += G:\CodeBase\eigen_3_1_2

测试代码如下:

#include 
#include 

using namespace Eigen;

int main()
{
    Matrix2d a;
    a << 1, 2,
    3, 4;

    MatrixXd b(2,2);
    b << 2, 3,
    1, 4;

    std::cout << "a + b =\n" << a + b << std::endl;
    std::cout << "a - b =\n" << a - b << std::endl;
    std::cout << "Doing a += b;" << std::endl;
    a += b;
    std::cout << "Now a =\n" << a << std::endl;

    Vector3d v(1,2,3);
    Vector3d w(1,0,0);

    std::cout << "-v + w - v =\n" << -v + w - v << std::endl;

    return 0;
}

测试结果:
Eigen在Qt中的配置(博主亲测)_第1张图片

你可能感兴趣的:(▶,数学基础,#,▶,Qt)