@@ -367,12 +367,14 @@ function(fixup_bundle_with_plugins app)
367367 endif ()
368368
369369 # Since BundleUtilities module does not know how to install .app directory withing
370- # an existing app, the following explicitly install the designer application.
370+ # an existing app, the following explicitly install the designer application as well
371+ # as the QtDesignerComponents.framework.
371372 set (Slicer_BUILD_QT_DESIGNER_PLUGINS "@Slicer_BUILD_QT_DESIGNER_PLUGINS@" )
372373 set (designer_app_subdir "Designer.app" )
373374 set (designer_src_dir "${qt_root_dir} /../bin/${designer_app_subdir} " )
374375 set (designer_dest_dir "${app_dir} /Contents/bin/${designer_app_subdir} " )
375376 if (Slicer_BUILD_QT_DESIGNER_PLUGINS AND EXISTS ${designer_src_dir} )
377+ # Designer
376378 file (COPY "${designer_src_dir} /Contents" DESTINATION "${designer_dest_dir} /" USE_SOURCE_PERMISSIONS)
377379 set (designer_executable "${designer_dest_dir} /Contents/MacOS/Designer" )
378380 # Collect list of Qt framework dependencies
@@ -396,6 +398,32 @@ function(fixup_bundle_with_plugins app)
396398 -rpath "@executable_path/Frameworks" "@loader_path/../../../../"
397399 ${changes} "${designer_executable} "
398400 )
401+ # Generate qt.conf file to override plugin paths and ensure plugins provided
402+ # by Slicer package are loaded
403+ file (WRITE "${designer_dest_dir} /Contents/Resources/qt.conf" "[Paths]
404+ Plugins=../../../@Slicer_QtPlugins_DIR@
405+ " )
406+
407+ # QtDesignerComponents.framework
408+ set (resolved_item "${qt_root_dir} /QtDesignerComponents.framework/Versions/5/QtDesignerComponents" )
409+ set (resolved_embedded_item "${app_dir} /Contents/Frameworks/QtDesignerComponents.framework/Versions/5/QtDesignerComponents" )
410+ copy_resolved_framework_into_bundle("${resolved_item} " "${resolved_embedded_item} " )
411+ # Collect list of Qt framework dependencies
412+ set (prereqs )
413+ get_prerequisites(${resolved_embedded_item} "prereqs" 1 0 "" "" )
414+ # Generate list of "-change" arguments
415+ set (changes "" )
416+ foreach (item ${prereqs} )
417+ gp_item_default_embedded_path_override("${item} " path )
418+ get_filename_component (item_name "${item} " NAME )
419+ string (REGEX REPLACE "^.*(${item_name} .framework/.*/?${item_name} ).*$" "${path} /\\ 1" embedded_item "${item} " )
420+ set (changes ${changes} "-change" "${item} " "${embedded_item} " )
421+ endforeach ()
422+ # Update executable
423+ execute_process (COMMAND install_name_tool
424+ ${changes} -id "@rpath/Frameworks/QtDesignerComponents.framework/Versions/5/QtDesignerComponents"
425+ "${resolved_embedded_item} "
426+ )
399427 endif ()
400428 endif ()
401429
0 commit comments