diff --git a/cmake/VISPUtils.cmake b/cmake/VISPUtils.cmake index 3b8eebf23c..1e37d00e4e 100644 --- a/cmake/VISPUtils.cmake +++ b/cmake/VISPUtils.cmake @@ -1395,7 +1395,6 @@ macro(vp_get_interface_link_libraries libs link_libraries) # message("fin __imported_libs: ${__imported_libs}") # message("fin __libs: ${__libs}") - while(__imported_libs) # message("begin while __imported_libs: ${__imported_libs}") vp_list_pop_front(__imported_libs elt) @@ -1421,39 +1420,52 @@ macro(vp_get_interface_link_libraries libs link_libraries) foreach(config_ ${__config}) foreach(lib_ ${__libs}) # message("lib_: ${lib_}") - if(TARGET ${lib_}) - get_target_property(imported_libs_ ${lib_} IMPORTED_IMPLIB_${config_}) - if(NOT EXISTS ${imported_libs_}) - get_target_property(lib_location_ ${lib_} IMPORTED_LOCATION_${config_}) - endif() -# message("lib_location_: ${lib_location_}") - if(WIN32 AND EXISTS "${lib_location_}" AND "${config_}" MATCHES "RELEASE") # also valid for RELEASEWITHDEBINFO - list(APPEND ${link_libraries} optimized "${lib_location_}") - elseif(WIN32 AND EXISTS "${lib_location_}" AND "${config_}" MATCHES "DEBUG") - list(APPEND ${link_libraries} debug "${lib_location_}") - elseif(EXISTS ${lib_location_}) - list(APPEND ${link_libraries} ${lib_location_}) - endif() + if(TARGET ${lib_}) - get_target_property(lib_deps_ ${lib_} IMPORTED_LINK_INTERFACE_LIBRARIES_${config_}) -# message("lib_deps_ ---------: ${lib_deps_}") - if(lib_deps_) - foreach(deps_ ${lib_deps_}) - get_target_property(deps_location_ ${deps_} IMPORTED_LOCATION_${config_}) - if(EXISTS "${deps_location_}") - if(WIN32 AND "${config_}" MATCHES "RELEASE") - list(APPEND ${link_libraries} optimized ${deps_location_}) - elseif(WIN32 AND "${config_}" MATCHES "DEBUG") - list(APPEND ${link_libraries} debug ${deps_location_}) - else() - list(APPEND ${link_libraries} ${deps_location_}) + get_target_property(imported_libs_ ${lib_} IMPORTED_IMPLIB_${config_}) + if(NOT EXISTS ${imported_libs_}) + get_target_property(lib_location_ ${lib_} IMPORTED_LOCATION_${config_}) + endif() + # message("lib_location_: ${lib_location_}") + if(WIN32 AND EXISTS "${lib_location_}" AND "${config_}" MATCHES "RELEASE") # also valid for RELEASEWITHDEBINFO + list(APPEND ${link_libraries} optimized "${lib_location_}") + elseif(WIN32 AND EXISTS "${lib_location_}" AND "${config_}" MATCHES "DEBUG") + list(APPEND ${link_libraries} debug "${lib_location_}") + elseif(EXISTS ${lib_location_}) + list(APPEND ${link_libraries} ${lib_location_}) + endif() + + get_target_property(lib_deps_ ${lib_} IMPORTED_LINK_INTERFACE_LIBRARIES_${config_}) + # message("lib_deps_ ---------: ${lib_deps_}") + if(lib_deps_) + foreach(deps_ ${lib_deps_}) + get_target_property(deps_location_ ${deps_} IMPORTED_LOCATION_${config_}) + if(EXISTS "${deps_location_}") + if(WIN32 AND "${config_}" MATCHES "RELEASE") + list(APPEND ${link_libraries} optimized ${deps_location_}) + elseif(WIN32 AND "${config_}" MATCHES "DEBUG") + list(APPEND ${link_libraries} debug ${deps_location_}) + else() + list(APPEND ${link_libraries} ${deps_location_}) + endif() endif() + endforeach() + endif() + else() + # VTK_LIBRARIES does import /Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/lib/libz.tbd + # that doesn't exist and that does lied to a link error when building ustk_gui module: + # No rule to make target `/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/lib/libz.tbd', + # needed by `lib/libvisp_ustk_gui.3.6.1.dylib'. Stop. + # Here we introduce an additional check to ensure that libraries suffixed by .tbd exist + if(${lib_} MATCHES "/([^/]+)\\.tbd$") + if(EXISTS ${lib_}) + # Add only if .tbd file exists + list(APPEND ${link_libraries} ${lib_}) endif() - endforeach() + else() + list(APPEND ${link_libraries} ${lib_}) + endif() endif() - else() - list(APPEND ${link_libraries} ${lib_}) - endif() endforeach() endforeach()