diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 10abf8e5..d94c4073 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -117,26 +117,21 @@ else (SUITESPARSE) message("-- Building without SuiteSparse.") endif (SUITESPARSE) -# HACK BY NICK -# The SuiteSparse logic above doesn't look for UMFpack, but we need it. -# This code attempts to find if by assuming that it will be in the same place -# as cholmod -if(SUITESPARSE AND SUITESPARSE_FOUND) - string(REGEX REPLACE "cholmod" "umfpack" UMFPACK_LIBRARY ${CHOLMOD_LIBRARY}) - message("-- Guesstimated umfpack location as: ${UMFPACK_LIBRARY}") - if(EXISTS ${UMFPACK_LIBRARY}) - list(APPEND SUITESPARSE_LIBRARIES ${UMFPACK_LIBRARY}) - else() - message(WARNING "UMFPack guess failed, so we don't actually have SUITESPARSE support.") - set(SUITESPARSE_FOUND FALSE) - endif() -endif() - if(SUITESPARSE AND SUITESPARSE_FOUND) SET(GC_HAVE_SUITESPARSE TRUE) SET(GC_HAVE_SUITESPARSE TRUE PARENT_SCOPE) - set(SUITESPARSE_INCLUDE_DIRS "${SUITESPARSE_INCLUDE_DIRS}" PARENT_SCOPE) - set(SUITESPARSE_LIBRARIES "${SUITESPARSE_LIBRARIES}" PARENT_SCOPE) + if(NOT TARGET SuiteSparse::cholmod) + message(FATAL_ERROR "SuiteSparse::cholmod target not found.") + endif() + set_target_properties(SuiteSparse::cholmod PROPERTIES IMPORTED_GLOBAL TRUE) + if(NOT TARGET SuiteSparse::spqr) + message(FATAL_ERROR "SuiteSparse::spqr target not found.") + endif() + set_target_properties(SuiteSparse::spqr PROPERTIES IMPORTED_GLOBAL TRUE) + if(NOT TARGET SuiteSparse::umfpack) + message(FATAL_ERROR "SuiteSparse::umfpack target not found.") + endif() + set_target_properties(SuiteSparse::umfpack PROPERTIES IMPORTED_GLOBAL TRUE) else() SET(GC_HAVE_SUITESPARSE FALSE) SET(GC_HAVE_SUITESPARSE FALSE PARENT_SCOPE) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index dc623664..02ea02bf 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -187,8 +187,11 @@ target_compile_definitions(geometry-central PUBLIC NOMINMAX _USE_MATH_DEFINES) # Define CMAKE flag used in these sources (but should be kept OUT of headers) if(GC_HAVE_SUITESPARSE) target_compile_definitions(geometry-central PUBLIC GC_HAVE_SUITESPARSE) - target_include_directories(geometry-central PRIVATE ${SUITESPARSE_INCLUDE_DIRS}) - target_link_libraries(geometry-central PRIVATE ${SUITESPARSE_LIBRARIES}) + target_link_libraries(geometry-central PRIVATE + SuiteSparse::cholmod + SuiteSparse::spqr + SuiteSparse::umfpack + ) endif() # Export symbols if DLL is requested