CMake: Fix QMAKE_LIBS_ZSTD when zstd::libzstd_shared does not exist
qt_find_package() sets QT_TARGETS_OF_QMAKE_LIB_<NAME> 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_<NAME>. If a target does not exist,
qt_generate_qmake_libraries_pri_content() trusts it as a library name
and adds it into QMAKE_LIB_<NAME>_<CONFIG> directly.
3073b9c4de 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.7
Change-Id: Id2a79d6c028a80e53d7b9a6a6d11f436d40dde65
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
(cherry picked from commit 56853235458799bbf993fa7f2fa19ecf9bbdae9c)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
bb10
parent
7150ad74e1
commit
a59cfa47cd
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Reference in New Issue