@@ -70,10 +70,86 @@ list(APPEND ITKEigen3_INCLUDE_DIRS ${ITKEigen3_BINARY_DIR}/src)
7070# Eigen3 targets are not installed if ITK_USE_SYSTEM_EIGEN==True
7171itk_module_impl ()
7272
73- configure_file (src/itk_eigen.h.in src/itk_eigen.h )
73+ if (NOT ITK_LEGACY_REMOVE)
74+ configure_file (src/itk_eigen.h.in src/itk_eigen.h )
75+ install (
76+ FILES
77+ ${ITKEigen3_BINARY_DIR} /src/itk_eigen.h
78+ DESTINATION ${ITKEigen3_INSTALL_INCLUDE_DIR}
79+ COMPONENT Development
80+ )
81+ endif ()
82+
83+ # Generate a wrapper header for every Eigen module header so that
84+ # consumers can write #include "Eigen/Core" etc. and get either the
85+ # bundled or system Eigen header transparently.
86+ set (
87+ _eigen_module_headers
88+ Cholesky
89+ CholmodSupport
90+ Core
91+ Dense
92+ Eigen
93+ Eigenvalues
94+ Geometry
95+ Householder
96+ IterativeLinearSolvers
97+ Jacobi
98+ LU
99+ MetisSupport
100+ OrderingMethods
101+ PaStiXSupport
102+ PardisoSupport
103+ QR
104+ QtAlignedMalloc
105+ SPQRSupport
106+ SVD
107+ Sparse
108+ SparseCholesky
109+ SparseCore
110+ SparseLU
111+ SparseQR
112+ StdDeque
113+ StdList
114+ StdVector
115+ SuperLUSupport
116+ UmfPackSupport
117+ )
118+ set (
119+ _eigen_header_content
120+ [=[ /* Auto-generated by CMake – do not edit. */
121+ #ifndef itk_eigen_@EIGEN_HEADER_NAME@
122+ #define itk_eigen_@EIGEN_HEADER_NAME@
123+
124+ /* Use the Eigen3 library configured for ITK. */
125+ #cmakedefine ITK_USE_SYSTEM_EIGEN
126+ #ifdef ITK_USE_SYSTEM_EIGEN
127+ # include <Eigen/@EIGEN_HEADER_NAME@>
128+ #else
129+ # include "itkeigen/Eigen/@EIGEN_HEADER_NAME@"
130+ #endif
131+
132+ #endif
133+ ]=]
134+ )
135+
136+ foreach (_header IN LISTS _eigen_module_headers)
137+ set (EIGEN_HEADER_NAME "${_header} " )
138+ file (
139+ CONFIGURE
140+ OUTPUT "${ITKEigen3_BINARY_DIR} /src/itk_${_header} "
141+ CONTENT "${_eigen_header_content} "
142+ @ONLY
143+ )
144+ list (
145+ APPEND
146+ _generated_eigen_headers
147+ "${ITKEigen3_BINARY_DIR} /src/itk_${_header} "
148+ )
149+ endforeach ()
74150install (
75151 FILES
76- ${ITKEigen3_BINARY_DIR} /src/itk_eigen.h
152+ ${_generated_eigen_headers}
77153 DESTINATION ${ITKEigen3_INSTALL_INCLUDE_DIR}
78154 COMPONENT Development
79155)
0 commit comments