From 5ee9da89af7efe31ac45858bf1eb04e5155a3b50 Mon Sep 17 00:00:00 2001 From: Alexey Edelev Date: Fri, 5 Apr 2024 14:50:37 +0200 Subject: [PATCH] Prefer the versioned targets over the namespaceless one when collecting deps Change the way we collect dependencies in __qt_internal_walk_libs. Prefer the versioned Qt targets over the namespaceless. This fixes the generating of the pkg-config configs. Pick-to: 6.6 6.5 Task-number: QTBUG-124135 Change-Id: I660376e122a99b5bc0874f2bc6ccd4d80c9ad453 Reviewed-by: Ionen Wolkens Reviewed-by: Alexandru Croitor Reviewed-by: Qt CI Bot (cherry picked from commit ac4920b5c0a537ede62dcef76a32311a497c68e1) Reviewed-by: Qt Cherry-pick Bot --- cmake/QtPublicWalkLibsHelpers.cmake | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cmake/QtPublicWalkLibsHelpers.cmake b/cmake/QtPublicWalkLibsHelpers.cmake index 1d98dd6e58e..959283aca16 100644 --- a/cmake/QtPublicWalkLibsHelpers.cmake +++ b/cmake/QtPublicWalkLibsHelpers.cmake @@ -184,13 +184,13 @@ function(__qt_internal_walk_libs if(lib_target MATCHES "^::@") continue() elseif(TARGET ${lib_target}) - if ("${lib_target}" MATCHES "^Qt::(.*)") - # If both, Qt::Foo and Foo targets exist, prefer the target name without + if(NOT "${lib_target}" MATCHES "^(Qt|${QT_CMAKE_EXPORT_NAMESPACE})::.+") + # If both, Qt::Foo and Foo targets exist, prefer the target name with versioned # namespace. Which one is preferred doesn't really matter. This code exists to # avoid ending up with both, Qt::Foo and Foo in our dependencies. - set(namespaceless_lib_target "${CMAKE_MATCH_1}") - if(TARGET "${namespaceless_lib_target}") - set(lib_target ${namespaceless_lib_target}) + set(versioned_qt_target "${QT_CMAKE_EXPORT_NAMESPACE}::${lib_target}") + if(TARGET "${versioned_qt_target}") + set(lib_target ${versioned_qt_target}) endif() endif() get_target_property(lib_target_type ${lib_target} TYPE)