From fbfa067a304e8aea6ba6719395fd12a05688b6f8 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Wed, 12 Jun 2019 15:08:24 +0200 Subject: Fix static builds There were a few issues: - Third party dependency info for plugins was not generated, because the depends and public_depends variables were not fetched. This caused issues when trying to use the qcocoa plugin in a consuming application, because Cups::Cups was not found. - Privately linked libraries in extend_target were not considered when generating dependency info for modules. This caused issues in QtThemeSupport, becauese it could not find Qt::DBus, due to that target only being added as a private library in a conditional scope. - Make sure to handle privately linked internal modules like PlatformModuleInternal to map to the Qt5 package, because there is no standalone package for it. Also remove a TODO comment that says that qt_register_target_dependencies should maybe be called in extend_target. That's already the case. Change-Id: Ie99c52e800cd89e6f82008f1e38f4da5cd602929 Reviewed-by: Qt CMake Build Bot Reviewed-by: Tobias Hunger --- cmake/QtBuild.cmake | 11 +++++++---- cmake/QtPostProcess.cmake | 2 ++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake index 67c80ab2d6..3058e22bb5 100644 --- a/cmake/QtBuild.cmake +++ b/cmake/QtBuild.cmake @@ -766,12 +766,13 @@ function(qt_register_target_dependencies target public_libs private_libs) set(target_deps "") endif() - # TODO: should this also be in extend_target ? From the looks of it I would say that - # it is not necessary but I'm not sure foreach(lib IN LISTS public_libs private_libs) if ("${lib}" MATCHES "^Qt::(.*)") set(lib "${CMAKE_MATCH_1}") - if (lib STREQUAL Platform OR lib STREQUAL GlobalConfig) + if (lib STREQUAL Platform OR lib STREQUAL GlobalConfig + OR lib STREQUAL PlatformModuleInternal + OR lib STREQUAL PlatformPluginInternal + OR lib STREQUAL PlatformToolInternal) list(APPEND target_deps "Qt5\;${PROJECT_VERSION}") elseif ("${lib}" MATCHES "(.*)Private") list(APPEND target_deps "${INSTALL_CMAKE_NAMESPACE}${CMAKE_MATCH_1}\;${PROJECT_VERSION}") @@ -871,7 +872,9 @@ function(extend_target target) if(TARGET "${target_private}") target_link_libraries("${target_private}" INTERFACE "${target}" "${qt_libs_private}") endif() - qt_register_target_dependencies("${target}" "${arg_PUBLIC_LIBRARIES}" "${qt_libs_private}") + qt_register_target_dependencies("${target}" + "${arg_PUBLIC_LIBRARIES}" + "${qt_libs_private};${arg_LIBRARIES}") qt_autogen_tools(${target} diff --git a/cmake/QtPostProcess.cmake b/cmake/QtPostProcess.cmake index dc16514825..568719d4f0 100644 --- a/cmake/QtPostProcess.cmake +++ b/cmake/QtPostProcess.cmake @@ -171,6 +171,8 @@ endfunction() function(qt_internal_create_plugin_depends_file target) get_target_property(qt_module "${target}" QT_MODULE) + 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) set(target_deps_seen "") -- cgit v1.2.3