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 <joerg.bornemann@qt.io>
This commit is contained in:
parent
7e029878c0
commit
c71c48f512
|
@ -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()
|
|
@ -1088,10 +1088,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)
|
||||
|
|
Loading…
Reference in New Issue