FindEigen3.cmake 1.3 KB

123456789101112131415161718192021222324252627282930313233
  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. if (Eigen3_INCLUDE_DIR)
  7. file(STRINGS "${Eigen3_INCLUDE_DIR}/Eigen/src/Core/util/Macros.h" _Eigen3_version_lines
  8. REGEX "#define[ \t]+EIGEN_(WORLD|MAJOR|MINOR)_VERSION")
  9. string(REGEX REPLACE ".*EIGEN_WORLD_VERSION *\([0-9]*\).*" "\\1" _Eigen3_version_world "${_Eigen3_version_lines}")
  10. string(REGEX REPLACE ".*EIGEN_MAJOR_VERSION *\([0-9]*\).*" "\\1" _Eigen3_version_major "${_Eigen3_version_lines}")
  11. string(REGEX REPLACE ".*EIGEN_MINOR_VERSION *\([0-9]*\).*" "\\1" _Eigen3_version_minor "${_Eigen3_version_lines}")
  12. set(Eigen3_VERSION "${_Eigen3_version_world}.${_Eigen3_version_major}.${_Eigen3_version_minor}")
  13. unset(_Eigen3_version_world)
  14. unset(_Eigen3_version_major)
  15. unset(_Eigen3_version_minor)
  16. unset(_Eigen3_version_lines)
  17. endif ()
  18. include(FindPackageHandleStandardArgs)
  19. find_package_handle_standard_args(Eigen3
  20. REQUIRED_VARS Eigen3_INCLUDE_DIR
  21. VERSION_VAR Eigen3_VERSION)
  22. if (Eigen3_FOUND)
  23. set(Eigen3_INCLUDE_DIRS "${Eigen3_INCLUDE_DIR}")
  24. if (NOT TARGET Eigen3::Eigen3)
  25. add_library(Eigen3::Eigen3 INTERFACE IMPORTED)
  26. set_target_properties(Eigen3::Eigen3 PROPERTIES
  27. INTERFACE_INCLUDE_DIRECTORIES "${Eigen3_INCLUDE_DIR}")
  28. endif ()
  29. endif ()