aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml')
-rw-r--r--src/qml/Qt6QmlConfigExtras.cmake.in13
-rw-r--r--src/qml/Qt6QmlMacros.cmake11
2 files changed, 24 insertions, 0 deletions
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()
diff --git a/src/qml/Qt6QmlMacros.cmake b/src/qml/Qt6QmlMacros.cmake
index 01ee8fc4d4..2dfd02cbf6 100644
--- a/src/qml/Qt6QmlMacros.cmake
+++ b/src/qml/Qt6QmlMacros.cmake
@@ -1084,10 +1084,21 @@ endfunction()
include(CMakeParseArguments)
+# This function is called as a finalizer in qt6_finalize_executable() for any
+# target that links against the Qml library for a statically built Qt.
function(qt6_import_qml_plugins target)
if(QT6_IS_SHARED_LIBS_BUILD)
return()
endif()
+
+ # Protect against being called multiple times in case we are being called
+ # explicitly before the finalizer is invoked.
+ get_target_property(alreadyImported ${target} _QT_QML_PLUGINS_IMPORTED)
+ if(alreadyImported)
+ return()
+ endif()
+ set_target_properties(${target} PROPERTIES _QT_QML_PLUGINS_IMPORTED TRUE)
+
set(options)
set(oneValueArgs "PATH_TO_SCAN")
set(multiValueArgs)