#                                               -*- cmake -*-
#
#  Eigen3Config.cmake(.in)

# Use the following variables to compile and link against Eigen:
#  EIGEN_FOUND              - True if Eigen was found on your system
#  EIGEN_USE_FILE           - The file making Eigen usable
#  EIGEN_DEFINITIONS        - Definitions needed to build with Eigen
#  EIGEN_INCLUDE_DIR        - Directory where signature_of_eigen3_matrix_library can be found
#  EIGEN_INCLUDE_DIRS       - List of directories of Eigen and it's dependencies
#  EIGEN_ROOT_DIR           - The base directory of Eigen
#  EIGEN_VERSION_STRING     - A human-readable string containing the version
#  EIGEN_VERSION_MAJOR      - The major version of Eigen
#  EIGEN_VERSION_MINOR      - The minor version of Eigen
#  EIGEN_VERSION_PATCH      - The patch version of Eigen

set ( EIGEN_FOUND 1 )
set ( EIGEN_USE_FILE     "@EIGEN_USE_FILE@" )

set ( EIGEN_DEFINITIONS  "@EIGEN_DEFINITIONS@" )
set ( EIGEN_INCLUDE_DIR  "@EIGEN_INCLUDE_DIR@" )
set ( EIGEN_INCLUDE_DIRS "@EIGEN_INCLUDE_DIRS@" )
set ( EIGEN_ROOT_DIR     "@EIGEN_ROOT_DIR@" )

set ( EIGEN_VERSION_STRING "@EIGEN_VERSION_STRING@" )
set ( EIGEN_VERSION_MAJOR  "@EIGEN_VERSION_MAJOR@" )
set ( EIGEN_VERSION_MINOR  "@EIGEN_VERSION_MINOR@" )
set ( EIGEN_VERSION_PATCH  "@EIGEN_VERSION_PATCH@" )
