IDEs
Some workarounds and hacks might be useful for IDEs in order to use Eigen in an optimal way. This page is meant to collect them, to help newcomers.
Eclipse CDT
Paths
Apart from "Organize includes" (see the section below), everything works out of the box. For example, if Eigen is installed in /usr/include/eigen3 and this path is added to the Project Properties > C/C++ General > Paths & Symbols > Includes > GNU C++, you only need to add includes of the form#include <Eigen/Dense>
Organizing includes
This handy feature of Eclipse (Ctrl+Shift+O) does not work out of the box for Eigen. Eclipse tries to include by default the .h files of the library but those are not sufficient to build the project correctly. As done by default by Eclipse for the stdlib, substitution rules need to be used in order for Eclipse to automatically handle includes correctly.
Go to Preferences > C/C++ > Coding Style > Organize Includes > Header Substitution. There you can add a new rule, and import the following xml file:
<?xml version="1.0" encoding="UTF-8"?> <header_substitution_map cpp_only="false" name="Eigen Header Substitution"> <unconditional_substitution_map> <mapping key="<Eigen/src/Cholesky/LDLT.h>" value="<Eigen/Cholesky>"/> <mapping key="<Eigen/src/Cholesky/LLT.h>" value="<Eigen/Cholesky>"/> <mapping key="<Eigen/src/Cholesky/LLT_MKL.h>" value="<Eigen/Cholesky>"/> <mapping key="<Eigen/src/CholmodSupport/CholmodSupport.h>" value="<Eigen/CholmodSupport>"/> <mapping key="<Eigen/src/Core/Array.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/ArrayBase.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/ArrayWrapper.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Assign.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Assign_MKL.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/BandMatrix.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Block.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/BooleanRedux.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/CommaInitializer.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/CoreIterators.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/CwiseBinaryOp.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/CwiseNullaryOp.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/CwiseUnaryOp.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/CwiseUnaryView.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/DenseBase.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/DenseCoeffsBase.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/DenseStorage.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Diagonal.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/DiagonalMatrix.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/DiagonalProduct.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Dot.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/EigenBase.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Flagged.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/ForceAlignedAccess.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Functors.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Fuzzy.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/GeneralProduct.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/GenericPacketMath.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/GlobalFunctions.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/IO.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Map.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/MapBase.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/MathFunctions.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Matrix.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/MatrixBase.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/NestByValue.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/NoAlias.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/NumTraits.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/PermutationMatrix.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/PlainObjectBase.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/ProductBase.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Random.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Redux.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Ref.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Replicate.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/ReturnByValue.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Reverse.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Select.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/SelfAdjointView.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/SelfCwiseBinaryOp.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/SolveTriangular.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/StableNorm.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Stride.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Swap.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Transpose.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Transpositions.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/TriangularMatrix.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/VectorBlock.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/VectorwiseOp.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/Visitor.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/arch/AltiVec/Complex.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/arch/AltiVec/PacketMath.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/arch/Default/Settings.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/arch/NEON/Complex.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/arch/NEON/PacketMath.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/arch/SSE/Complex.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/arch/SSE/MathFunctions.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/arch/SSE/PacketMath.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/CoeffBasedProduct.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/GeneralBlockPanelKernel.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/GeneralMatrixMatrix.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/GeneralMatrixMatrix_MKL.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/GeneralMatrixMatrixTriangular_MKL.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/GeneralMatrixVector.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/GeneralMatrixVector_MKL.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/Parallelizer.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/SelfadjointMatrixMatrix.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/SelfadjointMatrixMatrix_MKL.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/SelfadjointMatrixVector.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/SelfadjointMatrixVector_MKL.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/SelfadjointProduct.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/SelfadjointRank2Update.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/TriangularMatrixMatrix.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/TriangularMatrixMatrix_MKL.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/TriangularMatrixVector.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/TriangularMatrixVector_MKL.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/TriangularSolverMatrix.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/TriangularSolverMatrix_MKL.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/products/TriangularSolverVector.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/util/BlasUtil.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/util/Constants.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/util/DisableStupidWarnings.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/util/ForwardDeclarations.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/util/Macros.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/util/Memory.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/util/Meta.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/util/MKL_support.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/util/NonMPL2.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/util/ReenableStupidWarnings.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/util/StaticAssert.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Core/util/XprHelper.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/Eigen2Support/Block.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Cwise.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/CwiseOperators.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Lazy.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/LeastSquares.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/LU.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Macros.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/MathFunctions.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Memory.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Meta.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Minor.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/QR.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/SVD.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/TriangularSolver.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/VectorBlock.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Geometry/AlignedBox.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Geometry/All.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Geometry/AngleAxis.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Geometry/Hyperplane.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Geometry/ParametrizedLine.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Geometry/Quaternion.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Geometry/Rotation2D.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Geometry/RotationBase.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Geometry/Scaling.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Geometry/Transform.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigen2Support/Geometry/Translation.h>" value="<Eigen/Eigen2Support>"/> <mapping key="<Eigen/src/Eigenvalues/ComplexEigenSolver.h>" value="<Eigen/Eigenvalues>"/> <mapping key="<Eigen/src/Eigenvalues/ComplexSchur.h>" value="<Eigen/Eigenvalues>"/> <mapping key="<Eigen/src/Eigenvalues/ComplexSchur_MKL.h>" value="<Eigen/Eigenvalues>"/> <mapping key="<Eigen/src/Eigenvalues/EigenSolver.h>" value="<Eigen/Eigenvalues>"/> <mapping key="<Eigen/src/Eigenvalues/GeneralizedEigenSolver.h>" value="<Eigen/Eigenvalues>"/> <mapping key="<Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h>" value="<Eigen/Eigenvalues>"/> <mapping key="<Eigen/src/Eigenvalues/HessenbergDecomposition.h>" value="<Eigen/Eigenvalues>"/> <mapping key="<Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h>" value="<Eigen/Eigenvalues>"/> <mapping key="<Eigen/src/Eigenvalues/RealQZ.h>" value="<Eigen/Eigenvalues>"/> <mapping key="<Eigen/src/Eigenvalues/RealSchur.h>" value="<Eigen/Eigenvalues>"/> <mapping key="<Eigen/src/Eigenvalues/RealSchur_MKL.h>" value="<Eigen/Eigenvalues>"/> <mapping key="<Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h>" value="<Eigen/Eigenvalues>"/> <mapping key="<Eigen/src/Eigenvalues/SelfAdjointEigenSolver_MKL.h>" value="<Eigen/Eigenvalues>"/> <mapping key="<Eigen/src/Eigenvalues/Tridiagonalization.h>" value="<Eigen/Eigenvalues>"/> <mapping key="<Eigen/src/Geometry/AlignedBox.h>" value="<Eigen/Geometry>"/> <mapping key="<Eigen/src/Geometry/AngleAxis.h>" value="<Eigen/Geometry>"/> <mapping key="<Eigen/src/Geometry/EulerAngles.h>" value="<Eigen/Geometry>"/> <mapping key="<Eigen/src/Geometry/Homogeneous.h>" value="<Eigen/Geometry>"/> <mapping key="<Eigen/src/Geometry/Hyperplane.h>" value="<Eigen/Geometry>"/> <mapping key="<Eigen/src/Geometry/OrthoMethods.h>" value="<Eigen/Geometry>"/> <mapping key="<Eigen/src/Geometry/ParametrizedLine.h>" value="<Eigen/Geometry>"/> <mapping key="<Eigen/src/Geometry/Quaternion.h>" value="<Eigen/Geometry>"/> <mapping key="<Eigen/src/Geometry/Rotation2D.h>" value="<Eigen/Geometry>"/> <mapping key="<Eigen/src/Geometry/RotationBase.h>" value="<Eigen/Geometry>"/> <mapping key="<Eigen/src/Geometry/Scaling.h>" value="<Eigen/Geometry>"/> <mapping key="<Eigen/src/Geometry/Transform.h>" value="<Eigen/Geometry>"/> <mapping key="<Eigen/src/Geometry/Translation.h>" value="<Eigen/Geometry>"/> <mapping key="<Eigen/src/Geometry/Umeyama.h>" value="<Eigen/Geometry>"/> <mapping key="<Eigen/src/Geometry/arch/Geometry_SSE.h>" value="<Eigen/Geometry>"/> <mapping key="<Eigen/src/Householder/BlockHouseholder.h>" value="<Eigen/Householder>"/> <mapping key="<Eigen/src/Householder/Householder.h>" value="<Eigen/Householder>"/> <mapping key="<Eigen/src/Householder/HouseholderSequence.h>" value="<Eigen/Householder>"/> <mapping key="<Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h>" value="<Eigen/IterativeLinearSolvers>"/> <mapping key="<Eigen/src/IterativeLinearSolvers/BiCGSTAB.h>" value="<Eigen/IterativeLinearSolvers>"/> <mapping key="<Eigen/src/IterativeLinearSolvers/ConjugateGradient.h>" value="<Eigen/IterativeLinearSolvers>"/> <mapping key="<Eigen/src/IterativeLinearSolvers/IncompleteLUT.h>" value="<Eigen/IterativeLinearSolvers>"/> <mapping key="<Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h>" value="<Eigen/IterativeLinearSolvers>"/> <mapping key="<Eigen/src/Jacobi/Jacobi.h>" value="<Eigen/Jacobi>"/> <mapping key="<Eigen/src/LU/Determinant.h>" value="<Eigen/LU>"/> <mapping key="<Eigen/src/LU/FullPivLU.h>" value="<Eigen/LU>"/> <mapping key="<Eigen/src/LU/Inverse.h>" value="<Eigen/LU>"/> <mapping key="<Eigen/src/LU/PartialPivLU.h>" value="<Eigen/LU>"/> <mapping key="<Eigen/src/LU/PartialPivLU_MKL.h>" value="<Eigen/LU>"/> <mapping key="<Eigen/src/LU/arch/Inverse_SSE.h>" value="<Eigen/LU>"/> <mapping key="<Eigen/src/MetisSupport/MetisSupport.h>" value="<Eigen/MetisSupport>"/> <mapping key="<Eigen/src/misc/blas.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/misc/Image.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/misc/Kernel.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/misc/Solve.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/misc/SparseSolve.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/OrderingMethods/Amd.h>" value="<Eigen/OrderingMethods>"/> <mapping key="<Eigen/src/OrderingMethods/Eigen_Colamd.h>" value="<Eigen/OrderingMethods>"/> <mapping key="<Eigen/src/OrderingMethods/Ordering.h>" value="<Eigen/OrderingMethods>"/> <mapping key="<Eigen/src/PardisoSupport/PardisoSupport.h>" value="<Eigen/PardisoSupport>"/> <mapping key="<Eigen/src/PaStiXSupport/PaStiXSupport.h>" value="<Eigen/PaStiXSupport>"/> <mapping key="<Eigen/src/plugins/ArrayCwiseBinaryOps.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/plugins/ArrayCwiseUnaryOps.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/plugins/BlockMethods.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/plugins/CommonCwiseBinaryOps.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/plugins/CommonCwiseUnaryOps.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/plugins/MatrixCwiseBinaryOps.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/plugins/MatrixCwiseUnaryOps.h>" value="<Eigen/Core>"/> <mapping key="<Eigen/src/QR/ColPivHouseholderQR.h>" value="<Eigen/QR>"/> <mapping key="<Eigen/src/QR/ColPivHouseholderQR_MKL.h>" value="<Eigen/QR>"/> <mapping key="<Eigen/src/QR/FullPivHouseholderQR.h>" value="<Eigen/QR>"/> <mapping key="<Eigen/src/QR/HouseholderQR.h>" value="<Eigen/QR>"/> <mapping key="<Eigen/src/QR/HouseholderQR_MKL.h>" value="<Eigen/QR>"/> <mapping key="<Eigen/src/SparseCholesky/SimplicialCholesky.h>" value="<Eigen/SparseCholesky>"/> <mapping key="<Eigen/src/SparseCholesky/SimplicialCholesky_impl.h>" value="<Eigen/SparseCholesky>"/> <mapping key="<Eigen/src/SparseCore/AmbiVector.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/CompressedStorage.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/ConservativeSparseSparseProduct.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/MappedSparseMatrix.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseBlock.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseColEtree.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseCwiseBinaryOp.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseCwiseUnaryOp.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseDenseProduct.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseDiagonalProduct.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseDot.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseFuzzy.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseMatrix.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseMatrixBase.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparsePermutation.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseProduct.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseRedux.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseSelfAdjointView.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseSparseProductWithPruning.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseTranspose.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseTriangularView.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseUtil.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseVector.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/SparseView.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseCore/TriangularSolver.h>" value="<Eigen/SparseCore>"/> <mapping key="<Eigen/src/SparseLU/SparseLU.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLU_column_bmod.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLU_column_dfs.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLU_copy_to_ucol.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLU_gemm_kernel.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLU_heap_relax_snode.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLU_kernel_bmod.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLU_Memory.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLU_panel_bmod.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLU_panel_dfs.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLU_pivotL.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLU_pruneL.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLU_relax_snode.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLU_Structs.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLU_Utils.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseLU/SparseLUImpl.h>" value="<Eigen/SparseLU>"/> <mapping key="<Eigen/src/SparseQR/SparseQR.h>" value="<Eigen/SparseQR>"/> <mapping key="<Eigen/src/SPQRSupport/SuiteSparseQRSupport.h>" value="<Eigen/SPQRSupport>"/> <mapping key="<Eigen/src/StlSupport/details.h>" value="<Eigen/StdDeque>"/> <mapping key="<Eigen/src/StlSupport/StdDeque.h>" value="<Eigen/StdDeque>"/> <mapping key="<Eigen/src/StlSupport/StdList.h>" value="<Eigen/StdList>"/> <mapping key="<Eigen/src/StlSupport/StdVector.h>" value="<Eigen/StdVector>"/> <mapping key="<Eigen/src/SuperLUSupport/SuperLUSupport.h>" value="<Eigen/SuperLUSupport>"/> <mapping key="<Eigen/src/SVD/JacobiSVD.h>" value="<Eigen/SVD>"/> <mapping key="<Eigen/src/SVD/JacobiSVD_MKL.h>" value="<Eigen/SVD>"/> <mapping key="<Eigen/src/SVD/UpperBidiagonalization.h>" value="<Eigen/SVD>"/> <mapping key="<Eigen/src/UmfPackSupport/UmfPackSupport.h>" value="<Eigen/UmfPackSupport>"/> </unconditional_substitution_map> <optional_substitution_map/> </header_substitution_map>
This file is useful in the case where the path of Eigen (for example /usr/include/eigen3) is defined as above. If not, the file needs to be adapted accordingly.
In case the Eigen architecture changes and the previous file is not up to date, you can use the following Python3 script (and adapt it with your own Eigen's path if different) to generate a new one:
import os from os.path import join Eigen_path = "/usr/include/eigen3" src_path = join(Eigen_path,"Eigen/src") xml_file = open("generated_substitution_list.xml",'w') xml_file.write('<?xml version="1.0" encoding="UTF-8"?>\n') xml_file.write('<header_substitution_map cpp_only="false" name="Eigen Header Substitution">\n') xml_file.write('<unconditional_substitution_map>\n') for header_dir in sorted(os.listdir(src_path),key=lambda c: c.lower()): if (header_dir=="plugins" or header_dir=="misc"): header_name = 'Core' else: header_name = header_dir for root, dirs, files in os.walk(join(src_path, header_dir)): dirs.sort(key=lambda c: c.lower()) files.sort(key=lambda c: c.lower()) for header in files: if header.endswith(".h"): if (header_dir == "StlSupport"): if (header == "details.h"): header_name = 'StdDeque' else: header_name = header.replace('.h','') xml_file.write('<mapping key="<Eigen/src') xml_file.write(root.replace(src_path,'')) xml_file.write('/') xml_file.write(header) xml_file.write('>" value="<Eigen/') xml_file.write(header_name) xml_file.write('>"/>\n') xml_file.write('</unconditional_substitution_map>\n') xml_file.write('<optional_substitution_map/>\n') xml_file.write('</header_substitution_map>') xml_file.close()