Difference between revisions of "IDEs"

From Eigen
Jump to: navigation, search
(Organizing includes: updated xml file from the architecture of the latest Eigen version)
(Organizing includes)
Line 10: Line 10:
 
Go to '''Preferences > C/C++ > Coding Style > Organize Includes > Header Substitution'''. There you can add a new rule, and import the following xml file:
 
Go to '''Preferences > C/C++ > Coding Style > Organize Includes > Header Substitution'''. There you can add a new rule, and import the following xml file:
  
 +
<div class="toccolours mw-collapsible mw-collapsed">
 +
eigen-header-substitution.xml:
 +
<div class="mw-collapsible-content">
 
<source lang="xml">
 
<source lang="xml">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
Line 272: Line 275:
 
</header_substitution_map>
 
</header_substitution_map>
 
</source>
 
</source>
 +
</div>
 +
</div>
  
 
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.
 
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.

Revision as of 13:32, 21 December 2016

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>
as used in Eigen's documentation.

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:

eigen-header-substitution.xml:

<?xml version="1.0" encoding="UTF-8"?>
<header_substitution_map cpp_only="false" name="Eigen Header Substitution">
<unconditional_substitution_map>
<mapping key="&lt;Eigen/src/Cholesky/LDLT.h&gt;" value="&lt;Eigen/Cholesky&gt;"/>
<mapping key="&lt;Eigen/src/Cholesky/LLT.h&gt;" value="&lt;Eigen/Cholesky&gt;"/>
<mapping key="&lt;Eigen/src/Cholesky/LLT_MKL.h&gt;" value="&lt;Eigen/Cholesky&gt;"/>
<mapping key="&lt;Eigen/src/CholmodSupport/CholmodSupport.h&gt;" value="&lt;Eigen/CholmodSupport&gt;"/>
<mapping key="&lt;Eigen/src/Core/Array.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/ArrayBase.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/ArrayWrapper.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Assign.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Assign_MKL.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/BandMatrix.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Block.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/BooleanRedux.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/CommaInitializer.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/CoreIterators.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/CwiseBinaryOp.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/CwiseNullaryOp.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/CwiseUnaryOp.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/CwiseUnaryView.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/DenseBase.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/DenseCoeffsBase.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/DenseStorage.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Diagonal.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/DiagonalMatrix.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/DiagonalProduct.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Dot.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/EigenBase.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Flagged.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/ForceAlignedAccess.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Functors.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Fuzzy.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/GeneralProduct.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/GenericPacketMath.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/GlobalFunctions.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/IO.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Map.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/MapBase.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/MathFunctions.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Matrix.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/MatrixBase.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/NestByValue.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/NoAlias.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/NumTraits.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/PermutationMatrix.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/PlainObjectBase.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/ProductBase.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Random.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Redux.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Ref.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Replicate.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/ReturnByValue.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Reverse.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Select.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/SelfAdjointView.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/SelfCwiseBinaryOp.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/SolveTriangular.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/StableNorm.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Stride.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Swap.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Transpose.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Transpositions.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/TriangularMatrix.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/VectorBlock.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/VectorwiseOp.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/Visitor.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/arch/AltiVec/Complex.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/arch/AltiVec/PacketMath.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/arch/Default/Settings.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/arch/NEON/Complex.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/arch/NEON/PacketMath.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/arch/SSE/Complex.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/arch/SSE/MathFunctions.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/arch/SSE/PacketMath.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/CoeffBasedProduct.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/GeneralBlockPanelKernel.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/GeneralMatrixMatrix.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/GeneralMatrixMatrix_MKL.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/GeneralMatrixMatrixTriangular_MKL.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/GeneralMatrixVector.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/GeneralMatrixVector_MKL.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/Parallelizer.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/SelfadjointMatrixMatrix.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/SelfadjointMatrixMatrix_MKL.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/SelfadjointMatrixVector.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/SelfadjointMatrixVector_MKL.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/SelfadjointProduct.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/SelfadjointRank2Update.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/TriangularMatrixMatrix.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/TriangularMatrixMatrix_MKL.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/TriangularMatrixVector.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/TriangularMatrixVector_MKL.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/TriangularSolverMatrix.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/TriangularSolverMatrix_MKL.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/products/TriangularSolverVector.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/util/BlasUtil.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/util/Constants.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/util/DisableStupidWarnings.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/util/ForwardDeclarations.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/util/Macros.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/util/Memory.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/util/Meta.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/util/MKL_support.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/util/NonMPL2.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/util/ReenableStupidWarnings.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/util/StaticAssert.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Core/util/XprHelper.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Block.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Cwise.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/CwiseOperators.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Lazy.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/LeastSquares.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/LU.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Macros.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/MathFunctions.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Memory.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Meta.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Minor.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/QR.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/SVD.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/TriangularSolver.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/VectorBlock.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Geometry/AlignedBox.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Geometry/All.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Geometry/AngleAxis.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Geometry/Hyperplane.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Geometry/ParametrizedLine.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Geometry/Quaternion.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Geometry/Rotation2D.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Geometry/RotationBase.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Geometry/Scaling.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Geometry/Transform.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigen2Support/Geometry/Translation.h&gt;" value="&lt;Eigen/Eigen2Support&gt;"/>
<mapping key="&lt;Eigen/src/Eigenvalues/ComplexEigenSolver.h&gt;" value="&lt;Eigen/Eigenvalues&gt;"/>
<mapping key="&lt;Eigen/src/Eigenvalues/ComplexSchur.h&gt;" value="&lt;Eigen/Eigenvalues&gt;"/>
<mapping key="&lt;Eigen/src/Eigenvalues/ComplexSchur_MKL.h&gt;" value="&lt;Eigen/Eigenvalues&gt;"/>
<mapping key="&lt;Eigen/src/Eigenvalues/EigenSolver.h&gt;" value="&lt;Eigen/Eigenvalues&gt;"/>
<mapping key="&lt;Eigen/src/Eigenvalues/GeneralizedEigenSolver.h&gt;" value="&lt;Eigen/Eigenvalues&gt;"/>
<mapping key="&lt;Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h&gt;" value="&lt;Eigen/Eigenvalues&gt;"/>
<mapping key="&lt;Eigen/src/Eigenvalues/HessenbergDecomposition.h&gt;" value="&lt;Eigen/Eigenvalues&gt;"/>
<mapping key="&lt;Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h&gt;" value="&lt;Eigen/Eigenvalues&gt;"/>
<mapping key="&lt;Eigen/src/Eigenvalues/RealQZ.h&gt;" value="&lt;Eigen/Eigenvalues&gt;"/>
<mapping key="&lt;Eigen/src/Eigenvalues/RealSchur.h&gt;" value="&lt;Eigen/Eigenvalues&gt;"/>
<mapping key="&lt;Eigen/src/Eigenvalues/RealSchur_MKL.h&gt;" value="&lt;Eigen/Eigenvalues&gt;"/>
<mapping key="&lt;Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h&gt;" value="&lt;Eigen/Eigenvalues&gt;"/>
<mapping key="&lt;Eigen/src/Eigenvalues/SelfAdjointEigenSolver_MKL.h&gt;" value="&lt;Eigen/Eigenvalues&gt;"/>
<mapping key="&lt;Eigen/src/Eigenvalues/Tridiagonalization.h&gt;" value="&lt;Eigen/Eigenvalues&gt;"/>
<mapping key="&lt;Eigen/src/Geometry/AlignedBox.h&gt;" value="&lt;Eigen/Geometry&gt;"/>
<mapping key="&lt;Eigen/src/Geometry/AngleAxis.h&gt;" value="&lt;Eigen/Geometry&gt;"/>
<mapping key="&lt;Eigen/src/Geometry/EulerAngles.h&gt;" value="&lt;Eigen/Geometry&gt;"/>
<mapping key="&lt;Eigen/src/Geometry/Homogeneous.h&gt;" value="&lt;Eigen/Geometry&gt;"/>
<mapping key="&lt;Eigen/src/Geometry/Hyperplane.h&gt;" value="&lt;Eigen/Geometry&gt;"/>
<mapping key="&lt;Eigen/src/Geometry/OrthoMethods.h&gt;" value="&lt;Eigen/Geometry&gt;"/>
<mapping key="&lt;Eigen/src/Geometry/ParametrizedLine.h&gt;" value="&lt;Eigen/Geometry&gt;"/>
<mapping key="&lt;Eigen/src/Geometry/Quaternion.h&gt;" value="&lt;Eigen/Geometry&gt;"/>
<mapping key="&lt;Eigen/src/Geometry/Rotation2D.h&gt;" value="&lt;Eigen/Geometry&gt;"/>
<mapping key="&lt;Eigen/src/Geometry/RotationBase.h&gt;" value="&lt;Eigen/Geometry&gt;"/>
<mapping key="&lt;Eigen/src/Geometry/Scaling.h&gt;" value="&lt;Eigen/Geometry&gt;"/>
<mapping key="&lt;Eigen/src/Geometry/Transform.h&gt;" value="&lt;Eigen/Geometry&gt;"/>
<mapping key="&lt;Eigen/src/Geometry/Translation.h&gt;" value="&lt;Eigen/Geometry&gt;"/>
<mapping key="&lt;Eigen/src/Geometry/Umeyama.h&gt;" value="&lt;Eigen/Geometry&gt;"/>
<mapping key="&lt;Eigen/src/Geometry/arch/Geometry_SSE.h&gt;" value="&lt;Eigen/Geometry&gt;"/>
<mapping key="&lt;Eigen/src/Householder/BlockHouseholder.h&gt;" value="&lt;Eigen/Householder&gt;"/>
<mapping key="&lt;Eigen/src/Householder/Householder.h&gt;" value="&lt;Eigen/Householder&gt;"/>
<mapping key="&lt;Eigen/src/Householder/HouseholderSequence.h&gt;" value="&lt;Eigen/Householder&gt;"/>
<mapping key="&lt;Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h&gt;" value="&lt;Eigen/IterativeLinearSolvers&gt;"/>
<mapping key="&lt;Eigen/src/IterativeLinearSolvers/BiCGSTAB.h&gt;" value="&lt;Eigen/IterativeLinearSolvers&gt;"/>
<mapping key="&lt;Eigen/src/IterativeLinearSolvers/ConjugateGradient.h&gt;" value="&lt;Eigen/IterativeLinearSolvers&gt;"/>
<mapping key="&lt;Eigen/src/IterativeLinearSolvers/IncompleteLUT.h&gt;" value="&lt;Eigen/IterativeLinearSolvers&gt;"/>
<mapping key="&lt;Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h&gt;" value="&lt;Eigen/IterativeLinearSolvers&gt;"/>
<mapping key="&lt;Eigen/src/Jacobi/Jacobi.h&gt;" value="&lt;Eigen/Jacobi&gt;"/>
<mapping key="&lt;Eigen/src/LU/Determinant.h&gt;" value="&lt;Eigen/LU&gt;"/>
<mapping key="&lt;Eigen/src/LU/FullPivLU.h&gt;" value="&lt;Eigen/LU&gt;"/>
<mapping key="&lt;Eigen/src/LU/Inverse.h&gt;" value="&lt;Eigen/LU&gt;"/>
<mapping key="&lt;Eigen/src/LU/PartialPivLU.h&gt;" value="&lt;Eigen/LU&gt;"/>
<mapping key="&lt;Eigen/src/LU/PartialPivLU_MKL.h&gt;" value="&lt;Eigen/LU&gt;"/>
<mapping key="&lt;Eigen/src/LU/arch/Inverse_SSE.h&gt;" value="&lt;Eigen/LU&gt;"/>
<mapping key="&lt;Eigen/src/MetisSupport/MetisSupport.h&gt;" value="&lt;Eigen/MetisSupport&gt;"/>
<mapping key="&lt;Eigen/src/misc/blas.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/misc/Image.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/misc/Kernel.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/misc/Solve.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/misc/SparseSolve.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/OrderingMethods/Amd.h&gt;" value="&lt;Eigen/OrderingMethods&gt;"/>
<mapping key="&lt;Eigen/src/OrderingMethods/Eigen_Colamd.h&gt;" value="&lt;Eigen/OrderingMethods&gt;"/>
<mapping key="&lt;Eigen/src/OrderingMethods/Ordering.h&gt;" value="&lt;Eigen/OrderingMethods&gt;"/>
<mapping key="&lt;Eigen/src/PardisoSupport/PardisoSupport.h&gt;" value="&lt;Eigen/PardisoSupport&gt;"/>
<mapping key="&lt;Eigen/src/PaStiXSupport/PaStiXSupport.h&gt;" value="&lt;Eigen/PaStiXSupport&gt;"/>
<mapping key="&lt;Eigen/src/plugins/ArrayCwiseBinaryOps.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/plugins/ArrayCwiseUnaryOps.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/plugins/BlockMethods.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/plugins/CommonCwiseBinaryOps.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/plugins/CommonCwiseUnaryOps.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/plugins/MatrixCwiseBinaryOps.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/plugins/MatrixCwiseUnaryOps.h&gt;" value="&lt;Eigen/Core&gt;"/>
<mapping key="&lt;Eigen/src/QR/ColPivHouseholderQR.h&gt;" value="&lt;Eigen/QR&gt;"/>
<mapping key="&lt;Eigen/src/QR/ColPivHouseholderQR_MKL.h&gt;" value="&lt;Eigen/QR&gt;"/>
<mapping key="&lt;Eigen/src/QR/FullPivHouseholderQR.h&gt;" value="&lt;Eigen/QR&gt;"/>
<mapping key="&lt;Eigen/src/QR/HouseholderQR.h&gt;" value="&lt;Eigen/QR&gt;"/>
<mapping key="&lt;Eigen/src/QR/HouseholderQR_MKL.h&gt;" value="&lt;Eigen/QR&gt;"/>
<mapping key="&lt;Eigen/src/SparseCholesky/SimplicialCholesky.h&gt;" value="&lt;Eigen/SparseCholesky&gt;"/>
<mapping key="&lt;Eigen/src/SparseCholesky/SimplicialCholesky_impl.h&gt;" value="&lt;Eigen/SparseCholesky&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/AmbiVector.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/CompressedStorage.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/ConservativeSparseSparseProduct.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/MappedSparseMatrix.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseBlock.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseColEtree.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseCwiseBinaryOp.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseCwiseUnaryOp.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseDenseProduct.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseDiagonalProduct.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseDot.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseFuzzy.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseMatrix.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseMatrixBase.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparsePermutation.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseProduct.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseRedux.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseSelfAdjointView.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseSparseProductWithPruning.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseTranspose.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseTriangularView.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseUtil.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseVector.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/SparseView.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseCore/TriangularSolver.h&gt;" value="&lt;Eigen/SparseCore&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU_column_bmod.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU_column_dfs.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU_copy_to_ucol.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU_gemm_kernel.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU_heap_relax_snode.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU_kernel_bmod.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU_Memory.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU_panel_bmod.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU_panel_dfs.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU_pivotL.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU_pruneL.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU_relax_snode.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU_Structs.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLU_Utils.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseLU/SparseLUImpl.h&gt;" value="&lt;Eigen/SparseLU&gt;"/>
<mapping key="&lt;Eigen/src/SparseQR/SparseQR.h&gt;" value="&lt;Eigen/SparseQR&gt;"/>
<mapping key="&lt;Eigen/src/SPQRSupport/SuiteSparseQRSupport.h&gt;" value="&lt;Eigen/SPQRSupport&gt;"/>
<mapping key="&lt;Eigen/src/StlSupport/details.h&gt;" value="&lt;Eigen/StdDeque&gt;"/>
<mapping key="&lt;Eigen/src/StlSupport/StdDeque.h&gt;" value="&lt;Eigen/StdDeque&gt;"/>
<mapping key="&lt;Eigen/src/StlSupport/StdList.h&gt;" value="&lt;Eigen/StdList&gt;"/>
<mapping key="&lt;Eigen/src/StlSupport/StdVector.h&gt;" value="&lt;Eigen/StdVector&gt;"/>
<mapping key="&lt;Eigen/src/SuperLUSupport/SuperLUSupport.h&gt;" value="&lt;Eigen/SuperLUSupport&gt;"/>
<mapping key="&lt;Eigen/src/SVD/JacobiSVD.h&gt;" value="&lt;Eigen/SVD&gt;"/>
<mapping key="&lt;Eigen/src/SVD/JacobiSVD_MKL.h&gt;" value="&lt;Eigen/SVD&gt;"/>
<mapping key="&lt;Eigen/src/SVD/UpperBidiagonalization.h&gt;" value="&lt;Eigen/SVD&gt;"/>
<mapping key="&lt;Eigen/src/UmfPackSupport/UmfPackSupport.h&gt;" value="&lt;Eigen/UmfPackSupport&gt;"/>
</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="&lt;Eigen/src')
                xml_file.write(root.replace(src_path,''))
                xml_file.write('/')
                xml_file.write(header)
                xml_file.write('&gt;" value="&lt;Eigen/')
                xml_file.write(header_name)
                xml_file.write('&gt;"/>\n')
 
xml_file.write('</unconditional_substitution_map>\n')
xml_file.write('<optional_substitution_map/>\n')
xml_file.write('</header_substitution_map>')
 
xml_file.close()

Other IDEs