CMake: Fix backup/restore of QT_NO_PRIVATE_MODULE_WARNING

...in _qt_internal_find_qt_dependencies. In the case where a package is
loaded via its own dependencies (Qt6FooPrivate -> Qt6Foo ->
Qt6FooPrivate) the inner _qt_internal_find_qt_dependencies call did
unset the backup value of QT_NO_PRIVATE_MODULE_WARNING. This could lead
to an unwanted display of the private module warning.

Treat the backup variable as a stack to deal with this situation.

Pick-to: 6.9
Change-Id: I0ee3700a040b0df8c6090470ea6fc515cb93a7d6
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
Joerg Bornemann 2025-05-21 15:30:47 +02:00
parent 4623def5fb
commit 66803a863e

View File

@ -127,7 +127,7 @@ endmacro()
# contain preformed dependencies. See foreach block for reference.
# The same applies for find_dependency_path_list.
macro(_qt_internal_find_qt_dependencies target target_dep_list find_dependency_path_list)
set(__qt_${target}_find_qt_dependencies_save_QT_NO_PRIVATE_MODULE_WARNING
list(APPEND __qt_${target}_find_qt_dependencies_save_QT_NO_PRIVATE_MODULE_WARNING
${QT_NO_PRIVATE_MODULE_WARNING}
)
set(QT_NO_PRIVATE_MODULE_WARNING ON)
@ -152,10 +152,9 @@ macro(_qt_internal_find_qt_dependencies target target_dep_list find_dependency_p
endif()
endforeach()
set(QT_NO_PRIVATE_MODULE_WARNING
${__qt_${target}_find_qt_dependencies_save_QT_NO_PRIVATE_MODULE_WARNING}
list(POP_BACK __qt_${target}_find_qt_dependencies_save_QT_NO_PRIVATE_MODULE_WARNING
QT_NO_PRIVATE_MODULE_WARNING
)
unset(__qt_${target}_find_qt_dependencies_save_QT_NO_PRIVATE_MODULE_WARNING)
endmacro()
# If a dependency package was not found, provide some hints in the error message on how to debug