blob: eda000106da113180b0cdaee5a3530c7d20f836a [file]
# SPDX-FileCopyrightText: The Eigen Authors
# SPDX-License-Identifier: MPL-2.0
# Consumes an installed Eigen exactly the way doc/TopicCMakeGuide.dox opens:
# find_package plus target_link_libraries against Eigen3::Eigen.
# EIGEN_VERSION_SPEC carries the optional version argument so one project can
# stand in for the plain, ranged, and rejected forms the guide documents.
cmake_minimum_required(VERSION 3.17)
project(eigen_installed_consumer CXX)
find_package(Eigen3 ${EIGEN_VERSION_SPEC} REQUIRED NO_MODULE)
# Prove the package came from the install tree the scenario built. Eigen calls
# export(PACKAGE Eigen3), so an unrelated build tree recorded in CMake's user
# package registry can satisfy find_package and leave the scenario asserting
# nothing about what it installed.
if(EIGEN_EXPECTED_PREFIX)
get_filename_component(eigen_found_dir "${Eigen3_DIR}" REALPATH)
get_filename_component(eigen_expected_prefix "${EIGEN_EXPECTED_PREFIX}" REALPATH)
string(FIND "${eigen_found_dir}" "${eigen_expected_prefix}/" eigen_prefix_position)
if(NOT eigen_prefix_position EQUAL 0)
message(FATAL_ERROR
"found Eigen3 at ${eigen_found_dir}, expected it under ${eigen_expected_prefix}")
endif()
endif()
add_executable(consumer ../main.cpp)
target_link_libraries(consumer Eigen3::Eigen)