From 06a79325821b85e6a9d733f892a928e9db5ba1ab Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Mon, 21 Jun 2021 15:45:25 +0200 Subject: CMake: Don't check QT_QML_MODULE_RESOURCE_PATHS during file generation _qt_internal_target_enable_qmlcachegen is called if at least one qml file needs to be processed by qmlcachegen. Thus checking for QT_QML_MODULE_RESOURCE_PATHS not to be empty when generating a qmlcache_loader.cpp file makes no sense, we already know at least one file will be processed. If the assumption above were not true, e.g. QT_QML_MODULE_RESOURCE_PATHS was empty and _qt_internal_target_enable_qmlcachegen() was called, the _qt_internal_propagate_qmlcache_object_lib() -> add_library(OBJECT) call would fail trying to compile a file that does not exist (was not generated). Remove the genex checks for QT_QML_MODULE_RESOURCE_PATHS. This fixes qmlcache object libraries to be linked to consumers with static Qt builds. Before this change the qmlcache object libraries were not linked at all, because the QT_QML_MODULE_RESOURCE_PATHS genex check in target_link_libraries failed due to the QT_QML_MODULE_RESOURCE_PATHS values not being exported. Change-Id: Iec66c747b4189c0219aeb930e7c9c61f22d03d9b Reviewed-by: Ulf Hermann Reviewed-by: Alexey Edelev Reviewed-by: Qt CI Bot (cherry picked from commit 36827a9011ce008673d7a9b73bc74ee208ea8ebd) Reviewed-by: Qt Cherry-pick Bot --- src/qml/Qt6QmlMacros.cmake | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/qml/Qt6QmlMacros.cmake b/src/qml/Qt6QmlMacros.cmake index c467a27f5a..cecb728d76 100644 --- a/src/qml/Qt6QmlMacros.cmake +++ b/src/qml/Qt6QmlMacros.cmake @@ -639,7 +639,6 @@ function(_qt_internal_target_enable_qmlcachegen target output_targets_var) set(qmlcache_loader_cpp ${qmlcache_dir}/qmlcache_loader.cpp) set(qmlcache_loader_list ${qmlcache_dir}/qml_loader_file_list.rsp) set(qmlcache_resource_paths "$") - set(qmlcache_have_resource_paths "$") _qt_internal_genex_getjoinedproperty(qrc_resource_args ${target} _qt_generated_qrc_files "--resource$" "$" @@ -657,12 +656,11 @@ function(_qt_internal_target_enable_qmlcachegen target output_targets_var) file(GENERATE OUTPUT ${qmlcache_loader_list} CONTENT "$\n" - CONDITION "${qmlcache_have_resource_paths}" ) add_custom_command( OUTPUT ${qmlcache_loader_cpp} - COMMAND "$<${qmlcache_have_resource_paths}:${cmd}>" + COMMAND "${cmd}" COMMAND_EXPAND_LISTS DEPENDS ${QT_CMAKE_EXPORT_NAMESPACE}::qmlcachegen @@ -673,17 +671,16 @@ function(_qt_internal_target_enable_qmlcachegen target output_targets_var) # TODO: Probably need to reject ${target} being an object library as unsupported get_target_property(target_type ${target} TYPE) if(target_type STREQUAL "STATIC_LIBRARY") + set(extra_conditions "") _qt_internal_propagate_qmlcache_object_lib( ${target} "${qmlcache_loader_cpp}" - "${qmlcache_have_resource_paths}" + "${extra_conditions}" output_target) list(APPEND output_targets ${output_target}) else() - target_sources(${target} PRIVATE - "$<${qmlcache_have_resource_paths}:${qmlcache_loader_cpp}>" - ) + target_sources(${target} PRIVATE "${qmlcache_loader_cpp}") target_link_libraries(${target} PRIVATE ${QT_CMAKE_EXPORT_NAMESPACE}::QmlPrivate ${QT_CMAKE_EXPORT_NAMESPACE}::Core -- cgit v1.2.3