Skip to content

Commit 96e01b5

Browse files
cho-mthewtex
authored andcommitted
ENH: Support building with system Eigen3 >= 5
Eigen3 changed their version scheme in 5.0.0 to exclude the world version[^1] which makes CMake see it as an incompatible major version. To allow newer versions, perform an unversioned find_package and follow up with a version check. [^1]: https://gitlab.com/libeigen/eigen/-/releases/5.0.0#versioning
1 parent c9ec1d0 commit 96e01b5

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

Modules/ThirdParty/Eigen3/CMakeLists.txt

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,19 @@ set(_Eigen3_min_version 3.3)
5252

5353
if(ITK_USE_SYSTEM_EIGEN)
5454
set(_Eigen3_SYSTEM_OR_INTERNAL "Eigen3")
55-
find_package(${_Eigen3_SYSTEM_OR_INTERNAL} ${_Eigen3_min_version} REQUIRED CONFIG)
55+
find_package(${_Eigen3_SYSTEM_OR_INTERNAL} REQUIRED CONFIG)
5656
set(Eigen3_DIR_INSTALL ${Eigen3_DIR})
5757
set(Eigen3_DIR_BUILD ${Eigen3_DIR})
5858
else()
5959
set(_Eigen3_SYSTEM_OR_INTERNAL "ITKInternalEigen3")
60-
find_package(${_Eigen3_SYSTEM_OR_INTERNAL} ${_Eigen3_min_version} REQUIRED CONFIG)
60+
find_package(${_Eigen3_SYSTEM_OR_INTERNAL} REQUIRED CONFIG)
6161
set(Eigen3_DIR_INSTALL "\${ITK_MODULES_DIR}")
6262
set(_eigen3_build_dir "${ITK_BINARY_DIR}/ITKInternalEigen3-build")
6363
set(Eigen3_DIR_BUILD "${_eigen3_build_dir}")
6464
endif()
65+
if(${_Eigen3_SYSTEM_OR_INTERNAL}_VERSION VERSION_LESS ${_Eigen3_min_version})
66+
message(FATAL_ERROR "Eigen3 version ${_Eigen3_min_version} or later is required.")
67+
endif()
6568

6669
# Eigen3 is header only, but there are compile definitions that we want to provide
6770
# to enforce use of MPL only code, and to disable warnings.
@@ -77,12 +80,18 @@ set(ITKEigen3_INCLUDE_DIRS
7780
set(ITKEigen3_EXPORT_CODE_INSTALL "
7881
set(ITK_USE_SYSTEM_EIGEN \"${ITK_USE_SYSTEM_EIGEN}\")
7982
set(${_Eigen3_SYSTEM_OR_INTERNAL}_DIR \"${Eigen3_DIR_INSTALL}\")
80-
find_package(${_Eigen3_SYSTEM_OR_INTERNAL} ${_Eigen3_min_version} REQUIRED CONFIG)
83+
find_package(${_Eigen3_SYSTEM_OR_INTERNAL} REQUIRED CONFIG)
84+
if(${_Eigen3_SYSTEM_OR_INTERNAL}_VERSION VERSION_LESS ${_Eigen3_min_version})
85+
message(FATAL_ERROR \"Eigen3 version ${_Eigen3_min_version} or later is required.\")
86+
endif()
8187
")
8288
set(ITKEigen3_EXPORT_CODE_BUILD "
8389
set(ITK_USE_SYSTEM_EIGEN \"${ITK_USE_SYSTEM_EIGEN}\")
8490
set(${_Eigen3_SYSTEM_OR_INTERNAL}_DIR \"${Eigen3_DIR_BUILD}\")
85-
find_package(${_Eigen3_SYSTEM_OR_INTERNAL} ${_Eigen3_min_version} REQUIRED CONFIG)
91+
find_package(${_Eigen3_SYSTEM_OR_INTERNAL} REQUIRED CONFIG)
92+
if(${_Eigen3_SYSTEM_OR_INTERNAL}_VERSION VERSION_LESS ${_Eigen3_min_version})
93+
message(FATAL_ERROR \"Eigen3 version ${_Eigen3_min_version} or later is required.\")
94+
endif()
8695
")
8796

8897
# Eigen3 targets are not installed if ITK_USE_SYSTEM_EIGEN==True

0 commit comments

Comments
 (0)