From 56853235458799bbf993fa7f2fa19ecf9bbdae9c Mon Sep 17 00:00:00 2001 From: Li Xinwei <1326710505@qq.com> Date: Sun, 30 Jun 2024 12:45:28 +0800 Subject: [PATCH] CMake: Fix QMAKE_LIBS_ZSTD when zstd::libzstd_shared does not exist qt_find_package() sets QT_TARGETS_OF_QMAKE_LIB_ to all provided targets, without checking if each target exists. qt_generate_qmake_libraries_pri_content() iterates targets listed in QT_TARGETS_OF_QMAKE_LIB_. If a target does not exist, qt_generate_qmake_libraries_pri_content() trusts it as a library name and adds it into QMAKE_LIB__ directly. 3073b9c4dec5e5877363794bf81cbd4b84fdb9ee adds zstd::libzstd_shared to the PROVIDED_TARGETS argument of qt_find_package(). When WrapZSTD::WrapZSTD is found but zstd::libzstd_shared doesn't exist, QMAKE_LIBS_ZSTD now contains wrong content "libzstd::libzstd_shared". Pick-to: 6.8 6.7 Change-Id: Id2a79d6c028a80e53d7b9a6a6d11f436d40dde65 Reviewed-by: Alexey Edelev --- cmake/QtFindPackageHelpers.cmake | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/cmake/QtFindPackageHelpers.cmake b/cmake/QtFindPackageHelpers.cmake index b71226f322b..cf2848d13bd 100644 --- a/cmake/QtFindPackageHelpers.cmake +++ b/cmake/QtFindPackageHelpers.cmake @@ -258,10 +258,16 @@ macro(qt_find_package) AND (NOT arg_QMAKE_LIB IN_LIST QT_QMAKE_LIBS_FOR_${arg_MODULE_NAME})) set(QT_QMAKE_LIBS_FOR_${arg_MODULE_NAME} ${QT_QMAKE_LIBS_FOR_${arg_MODULE_NAME}};${arg_QMAKE_LIB} CACHE INTERNAL "") - set(QT_TARGETS_OF_QMAKE_LIB_${arg_QMAKE_LIB} ${arg_PROVIDED_TARGETS} CACHE INTERNAL "") + set(${arg_QMAKE_LIB}_existing_targets "") foreach(provided_target ${arg_PROVIDED_TARGETS}) - set(QT_QMAKE_LIB_OF_TARGET_${provided_target} ${arg_QMAKE_LIB} CACHE INTERNAL "") + if(TARGET ${provided_target}) + list(APPEND ${arg_QMAKE_LIB}_existing_targets "${provided_target}") + set(QT_QMAKE_LIB_OF_TARGET_${provided_target} + ${arg_QMAKE_LIB} CACHE INTERNAL "") + endif() endforeach() + set(QT_TARGETS_OF_QMAKE_LIB_${arg_QMAKE_LIB} + "${${arg_QMAKE_LIB}_existing_targets}" CACHE INTERNAL "") endif() endif() endmacro()