FindEigen3.cmake
Go to the documentation of this file.
1 find_path(Eigen3_INCLUDE_DIR
2  NAMES signature_of_eigen3_matrix_library
3  PATH_SUFFIXES eigen3 eigen
4  DOC "Eigen include directory")
5 mark_as_advanced(Eigen3_INCLUDE_DIR)
6 
7 if (Eigen3_INCLUDE_DIR)
8  file(STRINGS "${Eigen3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _Eigen3_version_lines
9  REGEX "#define[ \t]+EIGEN_(WORLD|MAJOR|MINOR)_VERSION")
10  string(REGEX REPLACE ".*EIGEN_WORLD_VERSION *\([0-9]*\).*" "\\1" _Eigen3_version_world "${_Eigen3_version_lines}")
11  string(REGEX REPLACE ".*EIGEN_MAJOR_VERSION *\([0-9]*\).*" "\\1" _Eigen3_version_major "${_Eigen3_version_lines}")
12  string(REGEX REPLACE ".*EIGEN_MINOR_VERSION *\([0-9]*\).*" "\\1" _Eigen3_version_minor "${_Eigen3_version_lines}")
13  set(Eigen3_VERSION "${_Eigen3_version_world}.${_Eigen3_version_major}.${_Eigen3_version_minor}")
14  unset(_Eigen3_version_world)
15  unset(_Eigen3_version_major)
16  unset(_Eigen3_version_minor)
17  unset(_Eigen3_version_lines)
18 endif ()
19 
20 include(FindPackageHandleStandardArgs)
21 find_package_handle_standard_args(Eigen3
22  REQUIRED_VARS Eigen3_INCLUDE_DIR
23  VERSION_VAR Eigen3_VERSION)
24 
25 if (Eigen3_FOUND)
26  set(Eigen3_INCLUDE_DIRS "${Eigen3_INCLUDE_DIR}")
27 
28  if (NOT TARGET Eigen3::Eigen3)
29  add_library(Eigen3::Eigen3 INTERFACE IMPORTED)
30  set_target_properties(Eigen3::Eigen3 PROPERTIES
31  INTERFACE_INCLUDE_DIRECTORIES "${Eigen3_INCLUDE_DIR}")
32  endif ()
33 endif ()
string