diff options
Diffstat (limited to 'cmake/QtPlugins.cmake.in')
-rw-r--r-- | cmake/QtPlugins.cmake.in | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/cmake/QtPlugins.cmake.in b/cmake/QtPlugins.cmake.in index d6d5c829b2..b5ecd6ba87 100644 --- a/cmake/QtPlugins.cmake.in +++ b/cmake/QtPlugins.cmake.in @@ -1,9 +1,20 @@ include_guard(DIRECTORY) - @QT_MODULE_PLUGIN_INCLUDES@ if(NOT @BUILD_SHARED_LIBS@) set(_module_target "@INSTALL_CMAKE_NAMESPACE@::@QT_MODULE@") + get_target_property(_qt_plugins ${_module_target} QT_PLUGINS) + + # Include all PluginConfig.cmake files and update the QT_PLUGINS property of the module. + file(GLOB _qt_plugin_config_files "${CMAKE_CURRENT_LIST_DIR}/@INSTALL_CMAKE_NAMESPACE@*PluginConfig.cmake") + foreach(_config_file ${_qt_plugin_config_files}) + string(REGEX REPLACE "^.*/@INSTALL_CMAKE_NAMESPACE@(.*Plugin)Config.cmake$" "\\1" _qt_plugin "${_config_file}") + include("${_config_file}") + list(APPEND _qt_plugins ${_qt_plugin}) + endforeach() + list(REMOVE_DUPLICATES _qt_plugins) + set_property(TARGET ${_module_target} PROPERTY QT_PLUGINS ${_qt_plugins}) + # Properties can't be set on aliased targets, so make sure to unalias the target. This is needed # when Qt examples are built as part of the Qt build itself. get_target_property(_aliased_target ${_module_target} ALIASED_TARGET) @@ -35,7 +46,7 @@ if(NOT @BUILD_SHARED_LIBS@) endif() # The code in here uses the properties defined in qt_import_plugins (Qt6CoreMacros.cmake) - foreach(target @qt_plugins@) + foreach(target ${_qt_plugins}) set(_plugin_target "@INSTALL_CMAKE_NAMESPACE@::${target}") set(_plugin_target_versionless "Qt::${target}") get_target_property(_classname "${_plugin_target}" QT_PLUGIN_CLASS_NAME) |