From 1fab8f77b57598408876998d0d549832add4f40d Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Thu, 17 Jul 2025 15:32:23 +0200 Subject: [PATCH] bugfix CMakeLists.txt adding log to example/test to indicate whether Eigen3 or SuiteSparse is used --- .../ARAP_parameterization.cpp | 5 +++++ .../Surface_mesh_parameterization/CMakeLists.txt | 8 +++++--- .../Surface_mesh_parameterization/CMakeLists.txt | 13 +++++++++++++ .../extensive_parameterization_test.cpp | 5 +++++ 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/ARAP_parameterization.cpp b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/ARAP_parameterization.cpp index 6919bd32dc8..192502af616 100644 --- a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/ARAP_parameterization.cpp +++ b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/ARAP_parameterization.cpp @@ -26,6 +26,11 @@ namespace SMP = CGAL::Surface_mesh_parameterization; int main(int argc, char** argv) { +#ifdef CGAL_SMP_USE_SUITESPARSE_SOLVERS + std::cout << "Using SuiteSparse" << std::endl; +#else + std::cout << "Using Eigen3" << std::endl; +#endif const std::string filename = (argc>1) ? argv[1] : CGAL::data_file_path("meshes/head.off"); SurfaceMesh sm; diff --git a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt index 59f4bcaec27..d7ad05d47b0 100644 --- a/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt +++ b/Surface_mesh_parameterization/examples/Surface_mesh_parameterization/CMakeLists.txt @@ -34,9 +34,11 @@ if(TARGET CGAL::Eigen3_support) target_link_libraries(square_border_parameterizer PUBLIC CGAL::Eigen3_support) create_single_source_cgal_program( "iterative_authalic_parameterizer.cpp" ) target_link_libraries(iterative_authalic_parameterizer PUBLIC CGAL::Eigen3_support) - if(SuiteSparse_FOUND) - target_link_libraries(ARAP_parameterization PRIVATE ${SuiteSparse_LIBRARIES}) - target_link_libraries(orbifold PRIVATE ${SuiteSparse_LIBRARIES}) + if(TARGET SuiteSparse::UMFPACK) + target_link_libraries(ARAP_parameterization PRIVATE SuiteSparse::UMFPACK) + target_link_libraries(orbifold PRIVATE PRIVATE SuiteSparse::UMFPACK) + target_compile_definitions(ARAP_parameterization PRIVATE EIGEN_DONT_ALIGN_STATICALLY CGAL_SMP_USE_SUITESPARSE_SOLVERS) + target_compile_definitions(orbifold PRIVATE EIGEN_DONT_ALIGN_STATICALLY CGAL_SMP_USE_SUITESPARSE_SOLVERS) endif() else() diff --git a/Surface_mesh_parameterization/test/Surface_mesh_parameterization/CMakeLists.txt b/Surface_mesh_parameterization/test/Surface_mesh_parameterization/CMakeLists.txt index 00278df2f7a..885af839aeb 100644 --- a/Surface_mesh_parameterization/test/Surface_mesh_parameterization/CMakeLists.txt +++ b/Surface_mesh_parameterization/test/Surface_mesh_parameterization/CMakeLists.txt @@ -6,11 +6,24 @@ project(Surface_mesh_parameterization_Tests) # Find CGAL find_package(CGAL REQUIRED) +find_package(UMFPACK QUIET NO_MODULE) + +if(TARGET SuiteSparse::UMFPACK) + message(STATUS "Orbifold Tutte Embeddings will use UmfPackLU") +else() + message(STATUS "NOTICE: Examples will be compiled without the SuiteSparse library and UmfPack. Try setting CMAKE_PREFIX_PATH to your SuiteSparse installation.") +endif() + find_package(Eigen3 3.1.0 QUIET) #(requires 3.1.0 or greater) include(CGAL_Eigen3_support) if(TARGET CGAL::Eigen3_support) create_single_source_cgal_program("extensive_parameterization_test.cpp") target_link_libraries(extensive_parameterization_test PUBLIC CGAL::Eigen3_support) + + if(TARGET SuiteSparse::UMFPACK) + target_link_libraries(extensive_parameterization_test PRIVATE SuiteSparse::UMFPACK) + target_compile_definitions(extensive_parameterization_test PRIVATE EIGEN_DONT_ALIGN_STATICALLY CGAL_SMP_USE_SUITESPARSE_SOLVERS) + endif() else() message("NOTICE: The tests require Eigen 3.1 (or greater), and will not be compiled.") endif() diff --git a/Surface_mesh_parameterization/test/Surface_mesh_parameterization/extensive_parameterization_test.cpp b/Surface_mesh_parameterization/test/Surface_mesh_parameterization/extensive_parameterization_test.cpp index ff97d007295..dbfc458d93d 100644 --- a/Surface_mesh_parameterization/test/Surface_mesh_parameterization/extensive_parameterization_test.cpp +++ b/Surface_mesh_parameterization/test/Surface_mesh_parameterization/extensive_parameterization_test.cpp @@ -78,6 +78,11 @@ typedef boost::graph_traits::halfedge_descriptor SM_SE_halfedge int main(int, char**) { +#ifdef CGAL_SMP_USE_SUITESPARSE_SOLVERS + std::cout << "Using SuiteSparse" << std::endl; +#else + std::cout << "Using Eigen3" << std::endl; +#endif std::cout.precision(17); CGAL::IO::set_pretty_mode(std::cout);