Move check for non-standard Eigen installs into FindEigen.cmake - As part of adding support for detection of non-standard Homebrew install on OSX, an Eigen specific search directory was added to the search path in the main CMakeLists. This commit moves that search into FindEigen.cmake. Change-Id: Ia6142211961a0d1fdddeea77b83438e4ef94434f
diff --git a/CMakeLists.txt b/CMakeLists.txt index 608ce5a..49b36cc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -77,11 +77,8 @@ OUTPUT_STRIP_TRAILING_WHITESPACE) MESSAGE(STATUS "Detected Homebrew with install prefix: " "${HOMEBREW_INSTALL_PREFIX}, adding to CMake search paths.") + LIST(APPEND CMAKE_PREFIX_PATH "${HOMEBREW_INSTALL_PREFIX}") ENDIF() - # Note that Eigen is stored in <XXX>/include/eigen3/Eigen/XXX.h - # as such, the default prefix path on it's own is insufficient. - LIST(APPEND CMAKE_PREFIX_PATH "${HOMEBREW_INSTALL_PREFIX}" - "${HOMEBREW_INSTALL_PREFIX}/include/eigen3") ENDIF() # Make CMake aware of the cmake folder for local FindXXX scripts,
diff --git a/cmake/FindEigen.cmake b/cmake/FindEigen.cmake index 2cd3e12..0d8d1cd 100644 --- a/cmake/FindEigen.cmake +++ b/cmake/FindEigen.cmake
@@ -98,6 +98,18 @@ NAMES Eigen/Core PATHS ${EIGEN_INCLUDE_DIR_HINTS} ${EIGEN_CHECK_INCLUDE_DIRS}) +IF (NOT EIGEN_INCLUDE_DIR) + # Handle case where user / CMAKE_PREFIX_PATH does not specify the + # required eigen3 subdirectory, prepend it to search target and retry. + FIND_PATH(EIGEN_INCLUDE_DIR + NAMES eigen3/Eigen/Core + PATHS ${EIGEN_INCLUDE_DIR_HINTS} + ${EIGEN_CHECK_INCLUDE_DIRS}) + IF (EIGEN_INCLUDE_DIR AND EXISTS ${EIGEN_INCLUDE_DIR}) + UPDATE_CACHE_VARIABLE(EIGEN_INCLUDE_DIR "${EIGEN_INCLUDE_DIR}/eigen3") + ENDIF (EIGEN_INCLUDE_DIR AND EXISTS ${EIGEN_INCLUDE_DIR}) +ENDIF(NOT EIGEN_INCLUDE_DIR) + IF (NOT EIGEN_INCLUDE_DIR OR NOT EXISTS ${EIGEN_INCLUDE_DIR}) EIGEN_REPORT_NOT_FOUND(