diff --git a/Packaging/prepare_file_list.cmake b/Packaging/prepare_file_list.cmake
index 5f0aaef717dbd748844bf2e452d66c831f4fe972..89a07e9a6a450ab079fc3632679d357d9289b1fb 100644
--- a/Packaging/prepare_file_list.cmake
+++ b/Packaging/prepare_file_list.cmake
@@ -89,6 +89,17 @@ function(prepare_file_list file_list_result)
       list(APPEND file_list ${otb_test_exe_name})
     endif()
   endforeach()
+
+  # find ITK targets
+  set(_itk_targets_path
+    "${SUPERBUILD_INSTALL_DIR}/lib/cmake/ITK-${PKG_ITK_SB_VERSION}")
+  file(GLOB _itk_targets_config_files "${_itk_targets_path}/ITKTargets-*.cmake")
+  foreach(f ${_itk_targets_config_files})
+    file(STRINGS ${f} _f_content REGEX " IMPORTED_LOCATION_[A-Z]+ ")
+    string(REGEX REPLACE " +IMPORTED_LOCATION_[A-Z]+ \"([^\"]+)\"" "\\1;" _filtered ${_f_content})
+    string(CONFIGURE "${_filtered}" _configured)
+    list(APPEND file_list "${_configured}")
+  endforeach()
   
   # special case for msvc: ucrtbase.dll must be explicitly vetted.
   # for proj.dll, see Mantis-1424
diff --git a/Packaging/process_file_recurse.cmake b/Packaging/process_file_recurse.cmake
index cc0e9f991e3e96047ac58988b3b3cdc4bac41a47..2fcde9aaec641411058adea284096876dfc13b41 100644
--- a/Packaging/process_file_recurse.cmake
+++ b/Packaging/process_file_recurse.cmake
@@ -43,6 +43,12 @@ function(process_file_recurse input_file)
     message(FATAL_ERROR "${input_file} not found. searched in ${PKG_SEARCHDIRS}")
   endif()
 
+  get_filename_component(bn_name ${input_file_full_path} NAME)
+  if(${bn_name}_RESOLVED)
+    # item already resolved
+    return()
+  endif()
+
   if(NOT PKG_DEBUG)
     message("Processing ${input_file_full_path}")
   endif()
@@ -67,7 +73,6 @@ function(process_file_recurse input_file)
   string(REPLACE ";" "\\;" candidates "${loader_ov}")
   string(REPLACE "\n" "${LOADER_REGEX_EOL};" candidates "${candidates}")
   
-  get_filename_component(bn_name ${input_file_full_path} NAME)
   set(${bn_name}_USED TRUE CACHE INTERNAL "")
 
   if(PKG_DEBUG)