> On 3. Jul 2023, at 15:29, Lisandro Damián Nicanor Pérez Meyer 
> <perezme...@gmail.com> wrote:
> 
> Hi!
> 
> El lunes, 3 de julio de 2023 05:26:11 -03 Alexandru Croitor escribió:
>>> On 30. Jun 2023, at 20:04, Lisandro Damián Nicanor Pérez Meyer 
>>> <perezme...@gmail.com> wrote:
> [snip]
>>> I recently noted the CMake variables QT_SKIP_AUTO_PLUGIN_INCLUSION and 
>>> QT_SKIP_AUTO_QML_PLUGIN_INCLUSION, which default to undefined.
>>> 
>>> If I understand correctly the CMake file for searching for plugins are 
>>> there because:
>>> 
>>> - One needs to find them when doing a static build in order to add them to 
>>> the final static object.
>>> - One might use it to find the plugins and copy them when bundling 
>>> applications.
>> 
>> That's right.
>> 
>> For static plugins, the loading of plugin Config files and the availability 
>> of the cmake targets is needed for final linking purposes and also at 
>> configure time for running qmlimportscanner, and other qml tooling.
>> For shared plugins, the targets are needed for deployment / bundling 
>> purposes (so runtime deps).
>> 
>> One particular case which I'm not sure if it's used right now, but was 
>> brought up in various (private) discussions, is creating static qt plugins 
>> in a shared qt build. 
>> In a more recent discussion, it was about providing a static plugin 
>> containing just image assets.
> 
> Perfect, so my understanding was more or less correct. So far none of the 
> above are use cases expected for a distro build.
> 
>> Depending on what the plugin is linked to in the end, for example a qt tool 
>> in another repo, the plugin target would need to exist at build time, and 
>> thus the config files loaded.
>> In this case, even a distro would have to load the file. 
> 
> And that would be a runtime dependency the tool has on the plugin, which is 
> just OK. If done properly that plugin will be installed due to packaging 
> dependencies.
> 

I don't think that's a runtime dependency, it's a build time dependency, hence 
the Config files need to be loaded.

To summarize the hypothetical case:

qtbase is shared Qt build, so libQt6Gui.so, etc

qtbase/src/plugins/icons/libqicons.a is a static qt plugin, even though Qt is a 
shared build. It belongs to the Gui module.

qttools/src/tools/designer is an app. It needs to link to libqicons.a at build 
time. 

The qttools/src/tools/designer/CMakeLists.txt will refer to it via a CMake 
Target name e.g Qt6::QIconsPlugin, hence the Qt6IconsPluginConfig.cmake package 
needs to be found and loaded. 
That would usually be done automatically via the find_package(Qt6 COMPONENTS 
Gui) call because the default is to load all plugin config files.

I suppose if the automatic loading is disabled, we can be explicit and add a 
find_package(Qt6 COMPONENTS IconsPlugin) in 
qttools/src/tools/designer/CMakeLists.txt and it would still work in your 
distro case.

So TLDR, should be safe for your to disable the automatic loading of plugins 
during a shared Qt distro build atm.



-- 
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to