From 563ade1276623c2a4dc6269dcb5669f5b256343e Mon Sep 17 00:00:00 2001 From: thysson2701 Date: Tue, 21 Jul 2026 14:30:48 +0200 Subject: [PATCH] fix(build): use pre-built Eigen3 from deps/ instead of bundled 3.3.7 deps_src/eigen contained Eigen 3.3.7 from the ImageMap fork, which predates the Eigen::all placeholder (requires Eigen 3.4+). libigl in deps_src uses Eigen::all, causing build failures. Switch to find_package so the Eigen3::Eigen target resolves to the Eigen 5.0.1 installed by deps/ CMakeLists via CMAKE_PREFIX_PATH. --- deps_src/eigen/CMakeLists.txt | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/deps_src/eigen/CMakeLists.txt b/deps_src/eigen/CMakeLists.txt index bd9cd4d358b..b534a55d825 100644 --- a/deps_src/eigen/CMakeLists.txt +++ b/deps_src/eigen/CMakeLists.txt @@ -1,15 +1,13 @@ cmake_minimum_required(VERSION 3.13) project(eigen) -add_library(eigen INTERFACE) +# Use the pre-built Eigen from deps/ (Eigen3Config.cmake is installed there via CMAKE_PREFIX_PATH). +# The bundled headers in this directory are an older version and must not be used directly, +# as libigl and admesh require Eigen3::Eigen with Eigen 3.4+ features (e.g. Eigen::all). +find_package(Eigen3 REQUIRED NO_MODULE) -target_include_directories(eigen SYSTEM - INTERFACE - ${CMAKE_CURRENT_SOURCE_DIR} -) - -# Eigen is header-only, so we only need to specify the include directory -# The headers are in the Eigen/ subdirectory structure - -# Alias so that targets linking Eigen3::Eigen also work -add_library(Eigen3::Eigen ALIAS eigen) +# Provide a plain "eigen" alias for any code that links to the unnamespaced target. +if(NOT TARGET eigen) + add_library(eigen INTERFACE) + target_link_libraries(eigen INTERFACE Eigen3::Eigen) +endif()