diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-06-02 16:50:20 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-06-09 08:01:02 +0200 |
commit | 5dc14c88f9510795835fb4f0a0d46d67c40f7020 (patch) | |
tree | 937173d548a6ad0d4c46cf75914adb6f6b140254 /src/qml/Qt6QmlMacros.cmake | |
parent | 6a48a81319b886c8a3f85e1eb024186b05d0f3af (diff) |
Allow QML plugins to be optional
If a plugin does nothing but load the library that provides the types,
we can skip the plugin loading by linking the library directly. State
that in the qmldir file, and evaluate it when loading the module.
Task-number: QTBUG-84639
Change-Id: I2097237866a50f66c55e4653ad119fe10e18a893
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/Qt6QmlMacros.cmake')
-rw-r--r-- | src/qml/Qt6QmlMacros.cmake | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/qml/Qt6QmlMacros.cmake b/src/qml/Qt6QmlMacros.cmake index 9671712bd3..43a590d310 100644 --- a/src/qml/Qt6QmlMacros.cmake +++ b/src/qml/Qt6QmlMacros.cmake @@ -68,6 +68,10 @@ # to not list any qml types. These are expected to be registered by the # c++ plugin code instead. # +# PLUGIN_OPTIONAL: The plugin is marked as optional in the qmldir file. If the +# type registration functions are already available by other means, typically +# by linking a library proxied by the plugin, it won't be loaded. +# function(qt6_add_qml_module target) @@ -76,6 +80,7 @@ function(qt6_add_qml_module target) DESIGNER_SUPPORTED DO_NOT_INSTALL_METADATA SKIP_TYPE_REGISTRATION + PLUGIN_OPTIONAL INSTALL_QML_FILES ) @@ -224,7 +229,13 @@ function(qt6_add_qml_module target) set(qmldir_file "${CMAKE_CURRENT_BINARY_DIR}/qmldir") set_target_properties(${target} PROPERTIES QT_QML_MODULE_QMLDIR_FILE ${qmldir_file}) set(qmldir_file_contents "module ${arg_URI}\n") - string(APPEND qmldir_file_contents "plugin ${target}\n") + + if (arg_PLUGIN_OPTIONAL) + string(APPEND qmldir_file_contents "optional plugin ${target}\n") + else() + string(APPEND qmldir_file_contents "plugin ${target}\n") + endif() + if (arg_CLASSNAME) string(APPEND qmldir_file_contents "classname ${arg_CLASSNAME}\n") endif() |