diff options
-rw-r--r-- | cmake/QtPostProcessHelpers.cmake | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/cmake/QtPostProcessHelpers.cmake b/cmake/QtPostProcessHelpers.cmake index 56b2d5e56f..4f8106dfae 100644 --- a/cmake/QtPostProcessHelpers.cmake +++ b/cmake/QtPostProcessHelpers.cmake @@ -25,7 +25,7 @@ macro(qt_collect_third_party_deps target) endif() unset(_target_is_static) - foreach(dep ${${depends_var}}) + foreach(dep ${${depends_var}} ${optional_public_depends}) # Gather third party packages that should be found when using the Qt module. # Also handle nolink target dependencies. string(REGEX REPLACE "_nolink$" "" base_dep "${dep}") @@ -44,6 +44,9 @@ macro(qt_collect_third_party_deps target) if(dep_seen EQUAL -1 AND package_name) list(APPEND third_party_deps_seen ${dep}) get_target_property(package_is_optional ${dep} INTERFACE_QT_PACKAGE_IS_OPTIONAL) + if(NOT package_is_optional AND dep IN_LIST optional_public_depends) + set(package_is_optional TRUE) + endif() get_target_property(package_version ${dep} INTERFACE_QT_PACKAGE_VERSION) if(NOT package_version) set(package_version "") @@ -76,6 +79,11 @@ function(qt_internal_create_module_depends_file target) get_target_property(public_depends "${target}" INTERFACE_LINK_LIBRARIES) + unset(optional_public_depends) + if(TARGET "${target}Private") + get_target_property(optional_public_depends "${target}Private" INTERFACE_LINK_LIBRARIES) + endif() + # Used for collecting Qt module dependencies that should be find_package()'d in # ModuleDependencies.cmake. get_target_property(target_deps "${target}" _qt_target_deps) @@ -227,6 +235,7 @@ function(qt_internal_create_plugin_depends_file target) get_target_property(depends "${target}" LINK_LIBRARIES) get_target_property(public_depends "${target}" INTERFACE_LINK_LIBRARIES) get_target_property(target_deps "${target}" _qt_target_deps) + unset(optional_public_depends) set(target_deps_seen "") qt_collect_third_party_deps(${target}) @@ -288,6 +297,8 @@ function(qt_internal_create_qt6_dependencies_file) # This is the actual target we're querying. set(actual_target Platform) get_target_property(public_depends "${actual_target}" INTERFACE_LINK_LIBRARIES) + unset(depends) + unset(optional_public_depends) # We need to collect third party deps that are set on the public Platform target, # like Threads::Threads. |