diff options
author | Alexey Edelev <alexey.edelev@qt.io> | 2021-06-02 15:02:03 +0200 |
---|---|---|
committer | Alexey Edelev <alexey.edelev@qt.io> | 2021-06-03 12:55:01 +0200 |
commit | a25027eecb3829a65543d0e8ab00c74e1b1a21c5 (patch) | |
tree | 913b01d7c6cda57f15eaead288c96a8ba0d91e97 /cmake/QtPublicTargetHelpers.cmake | |
parent | 2e02ae94975c324480bbb5c87106d7e098df1e7c (diff) | |
download | qtbase-a25027eecb3829a65543d0e8ab00c74e1b1a21c5.tar.gz |
Collect resource objects of plugins and their dependencies in finalizer
Resource objects might be linked to plugins. Since some plugins may
be present in LINK_LIBRARIES as the complex genexes, need to collect
them explicitly and iterate over plugin targets to find resource object
libraries that need to be exposed to end-point target executable.
Amends a1fd4f51ada82854f35654158a334454e760a9f7
Change-Id: Icd85f54f7bf9d1b7e3382caa5d9aa62449b6adb8
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'cmake/QtPublicTargetHelpers.cmake')
-rw-r--r-- | cmake/QtPublicTargetHelpers.cmake | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/cmake/QtPublicTargetHelpers.cmake b/cmake/QtPublicTargetHelpers.cmake index 285e84608c..3804b18ac4 100644 --- a/cmake/QtPublicTargetHelpers.cmake +++ b/cmake/QtPublicTargetHelpers.cmake @@ -33,7 +33,16 @@ endfunction() function(__qt_internal_collect_dependency_resource_objects target out_var) set_property(GLOBAL PROPERTY _qt_resource_processed_targets "") + __qt_internal_collect_resource_objects_recursively(resource_targets ${target} ${target}) + + # Collect resource objects of plugins and plugin dependencies. + __qt_internal_collect_plugin_targets_from_dependencies(${target} plugin_targets) + __qt_internal_collect_dependency_plugin_resource_objects(${target} + "${plugin_targets}" + plugin_resource_objects + ) + set_property(GLOBAL PROPERTY _qt_resource_processed_targets "") list(REMOVE_DUPLICATES resource_targets) @@ -42,7 +51,25 @@ function(__qt_internal_collect_dependency_resource_objects target out_var) list(PREPEND resource_objects "$<TARGET_OBJECTS:${dep}>") endforeach() - set(${out_var} "${resource_objects}" PARENT_SCOPE) + set(${out_var} "${plugin_resource_objects};${resource_objects}" PARENT_SCOPE) +endfunction() + +function(__qt_internal_collect_dependency_plugin_resource_objects target plugin_targets out_var) + set(plugin_resource_objects "") + foreach(plugin_target IN LISTS plugin_targets) + __qt_internal_collect_resource_objects_recursively(plugin_resource_targets + "${QT_CMAKE_EXPORT_NAMESPACE}::${plugin_target}" + ${target} + ) + __qt_internal_get_static_plugin_condition_genex("${plugin_target}" plugin_condition) + + foreach(plugin_resource_target IN LISTS plugin_resource_targets) + list(APPEND plugin_resource_objects + "$<${plugin_condition}:$<TARGET_OBJECTS:${plugin_resource_target}>>" + ) + endforeach() + endforeach() + set(${out_var} "${plugin_resource_objects}" PARENT_SCOPE) endfunction() function(__qt_internal_collect_resource_objects_recursively out_var target initial_target) @@ -77,7 +104,10 @@ function(__qt_internal_collect_resource_objects_recursively out_var target initi if(is_qt_resource) list(APPEND resource_targets ${lib}) else() - __qt_internal_collect_resource_objects_recursively(next_level_resources ${lib} ${initial_target}) + __qt_internal_collect_resource_objects_recursively(next_level_resources + ${lib} + ${initial_target} + ) list(APPEND resource_targets ${next_level_resources}) endif() endif() |