From c71c48f5125c116f01f615f51f10e4f2877b2b1d Mon Sep 17 00:00:00 2001 From: Craig Scott Date: Mon, 15 Feb 2021 12:41:11 +1100 Subject: Add finalizer to call qt6_import_qml_plugins() automatically Any target created by a call to qt6_add_executable() that also links to the Qml target will now automatically call qt6_import_qml_plugins() in qt6_finalize_executable() for scenarios that need it. This is only relevant for static builds and only when not doing a top level Qt superbuild. The finalizers feature requires CMake 3.18. If using an earlier CMake version, the project is still responsible for calling qt6_import_qml_plugins() itself. Fixes: QTBUG-86669 Pick-to: 6.1 Change-Id: I0f0b3f700ab6f1240b2373cb4155f52dc8991d2e Reviewed-by: Joerg Bornemann --- src/qml/Qt6QmlConfigExtras.cmake.in | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/qml/Qt6QmlConfigExtras.cmake.in (limited to 'src/qml/Qt6QmlConfigExtras.cmake.in') diff --git a/src/qml/Qt6QmlConfigExtras.cmake.in b/src/qml/Qt6QmlConfigExtras.cmake.in new file mode 100644 index 0000000000..3d5be2c22c --- /dev/null +++ b/src/qml/Qt6QmlConfigExtras.cmake.in @@ -0,0 +1,13 @@ +if(NOT QT_NO_CREATE_TARGETS AND + NOT "@BUILD_SHARED_LIBS@" AND # Only needed if Qt was built statically + CMAKE_VERSION VERSION_GREATER_EQUAL 3.18) # Finalizers require cmake_language(CALL) + set(target @QT_CMAKE_EXPORT_NAMESPACE@::Qml) + get_property(aliased_target TARGET ${target} PROPERTY ALIASED_TARGET) + if(aliased_target) + set(target "${aliased_target}") + endif() + set_property(TARGET ${target} PROPERTY + INTERFACE_QT_EXECUTABLE_FINALIZERS + qt@PROJECT_VERSION_MAJOR@_import_qml_plugins + ) +endif() -- cgit v1.2.3