Skip to content

Commit

Permalink
Force linking against versioned libraries when building Qt artifacts
Browse files Browse the repository at this point in the history
Replace Qt:: namespace with Qt6:: namespace in target_link_libraries
for the Qt modules/plugins/libraries.

Fixes: QTBUG-114706
Change-Id: Idfd0917dbe1a6a266bc4e9d5f465e550788b5aaf
Reviewed-by: Alexandru Croitor <[email protected]>
  • Loading branch information
semlanik committed Feb 19, 2024
1 parent 9c56c1f commit 1c287ce
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
21 changes: 18 additions & 3 deletions cmake/QtFindPackageHelpers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -515,8 +515,15 @@ function(qt_register_target_dependencies target public_libs private_libs)
endif()

foreach(lib IN LISTS lib_list)
if ("${lib}" MATCHES "^Qt::(.*)")
if("${lib}" MATCHES "^Qt::(.*)")
set(lib "${CMAKE_MATCH_1}")
elseif("${lib}" MATCHES "^${QT_CMAKE_EXPORT_NAMESPACE}::(.*)")
set(lib "${CMAKE_MATCH_1}")
else()
set(lib "")
endif()

if(lib)
qt_internal_get_package_name_of_target("${lib}" package_name)
qt_internal_get_package_version_of_target("${lib}" package_version)
list(APPEND target_deps "${package_name}\;${package_version}")
Expand All @@ -532,8 +539,16 @@ function(qt_register_target_dependencies target public_libs private_libs)
# INTERFACE libraries. INTERFACE libraries in most cases will be FooPrivate libraries.
if(target_is_shared AND private_libs)
foreach(lib IN LISTS private_libs)
if ("${lib}" MATCHES "^Qt::(.*)")
set(lib_namespaced "${lib}")
set(lib_namespaced "${lib}")
if("${lib}" MATCHES "^Qt::(.*)")
set(lib "${CMAKE_MATCH_1}")
elseif("${lib}" MATCHES "^${QT_CMAKE_EXPORT_NAMESPACE}::(.*)")
set(lib "${CMAKE_MATCH_1}")
else()
set(lib "")
endif()

if(lib)
set(lib "${CMAKE_MATCH_1}")

qt_internal_is_lib_part_of_qt6_package("${lib}" is_part_of_qt6)
Expand Down
3 changes: 3 additions & 0 deletions cmake/QtTargetHelpers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,9 @@ function(qt_internal_extend_target target)
endif()
endforeach()

list(TRANSFORM arg_PUBLIC_LIBRARIES REPLACE "^Qt::" "${QT_CMAKE_EXPORT_NAMESPACE}::")
list(TRANSFORM arg_LIBRARIES REPLACE "^Qt::" "${QT_CMAKE_EXPORT_NAMESPACE}::")

# Set-up the target

# CMake versions less than 3.19 don't support adding the source files to the PRIVATE scope
Expand Down

0 comments on commit 1c287ce

Please sign in to comment.