@@ -332,3 +332,59 @@ find_package_handle_standard_args(METIS DEFAULT_MSG
332332#
333333# TODO: Add possibility to check for specific functions in the library
334334#
335+
336+ #-----------------------------------------------------------------------------
337+ # Create imported target
338+ #-----------------------------------------------------------------------------
339+ if (NOT TARGET METIS::METIS)
340+ set (METIS_LIBRARY_TARGETS "" )
341+ foreach (LIBRARY_PATH ${METIS_LIBRARIES} )
342+ get_filename_component (LIBRARY_FILENAME "${LIBRARY_PATH} " NAME )
343+ get_filename_component (LIBRARY_EXTENSION "${LIBRARY_PATH} " LAST_EXT)
344+
345+ string (REGEX REPLACE "\\ .[^.]*$" "" LIBRARY_TARGET "${LIBRARY_FILENAME} " )
346+ string (REGEX REPLACE "^lib" "" LIBRARY_TARGET "${LIBRARY_TARGET} " )
347+ set (LIBRARY_TARGET "METIS::${LIBRARY_TARGET} _library" )
348+
349+ if (LIBRARY_EXTENSION STREQUAL ".a" )
350+ set (TARGET_TYPE "STATIC" )
351+ set (TARGET_IMPORTED_LOCATION "${LIBRARY_PATH} " )
352+ elseif (LIBRARY_EXTENSION STREQUAL ".lib" )
353+ get_filename_component (LIBRARY_BASENAME "${LIBRARY_FILENAME} " NAME_WE )
354+ get_filename_component (LIBRARY_DIRECTORY "${LIBRARY_PATH} " DIRECTORY )
355+ set (LIBRARY_DLL_SEARCH_PATHS
356+ "${LIBRARY_DIRECTORY} "
357+ "${LIBRARY_DIRECTORY} /../bin"
358+ "${LIBRARY_DIRECTORY} /../../bin"
359+ )
360+
361+ set (TARGET_TYPE "STATIC" )
362+ set (TARGET_IMPORTED_LOCATION "${LIBRARY_PATH} " )
363+ foreach (LIBRARY_DLL_SEARCH_PATH IN LISTS LIBRARY_DLL_SEARCH_PATHS)
364+ set (CANDIDATE_LIBRARY_DLL_PATH "${LIBRARY_DLL_SEARCH_PATH} /${LIBRARY_BASENAME} .dll" )
365+ if (EXISTS "${CANDIDATE_LIBRARY_DLL_PATH} " )
366+ set (TARGET_TYPE "SHARED" )
367+ set (TARGET_IMPORTED_LOCATION "${CANDIDATE_LIBRARY_DLL_PATH} " )
368+ break ()
369+ endif ()
370+ endforeach ()
371+ elseif (LIBRARY_EXTENSION STREQUAL ".so" )
372+ set (TARGET_TYPE "SHARED" )
373+ set (TARGET_IMPORTED_LOCATION "${LIBRARY_PATH} " )
374+ elseif (LIBRARY_EXTENSION STREQUAL ".dll" )
375+ set (TARGET_TYPE "SHARED" )
376+ set (TARGET_IMPORTED_LOCATION "${LIBRARY_PATH} " )
377+ endif ()
378+
379+ add_library (${LIBRARY_TARGET} ${TARGET_TYPE} IMPORTED )
380+ set_target_properties (${LIBRARY_TARGET} PROPERTIES IMPORTED_LOCATION ${TARGET_IMPORTED_LOCATION} )
381+ if (WIN32 AND TARGET_TYPE STREQUAL "SHARED" )
382+ set_target_properties (${LIBRARY_TARGET} PROPERTIES IMPORTED_IMPLIB "${LIBRARY_PATH} " )
383+ endif ()
384+ set_target_properties (${LIBRARY_TARGET} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${METIS_INCLUDE_DIRS} " )
385+ list (APPEND METIS_LIBRARY_TARGETS ${LIBRARY_TARGET} )
386+ endforeach ()
387+
388+ add_library (METIS::METIS INTERFACE IMPORTED )
389+ set_target_properties (METIS::METIS PROPERTIES INTERFACE_LINK_LIBRARIES "${METIS_LIBRARY_TARGETS} " )
390+ endif ()
0 commit comments