diff options
author | Alexandru Croitor <alexandru.croitor@qt.io> | 2021-06-21 15:45:25 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-06-23 09:04:49 +0000 |
commit | 06a79325821b85e6a9d733f892a928e9db5ba1ab (patch) | |
tree | 069013377a6ac8590b9da143218b776ade38544b | |
parent | 4ca6503820d858d913c0ad3dae7f869bd6834ae8 (diff) |
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 <ulf.hermann@qt.io>
Reviewed-by: Alexey Edelev <alexey.edelev@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
(cherry picked from commit 36827a9011ce008673d7a9b73bc74ee208ea8ebd)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/qml/Qt6QmlMacros.cmake | 11 |
1 files 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 "$<TARGET_PROPERTY:${target},QT_QML_MODULE_RESOURCE_PATHS>") - set(qmlcache_have_resource_paths "$<BOOL:${qmlcache_resource_paths}>") _qt_internal_genex_getjoinedproperty(qrc_resource_args ${target} _qt_generated_qrc_files "--resource$<SEMICOLON>" "$<SEMICOLON>" @@ -657,12 +656,11 @@ function(_qt_internal_target_enable_qmlcachegen target output_targets_var) file(GENERATE OUTPUT ${qmlcache_loader_list} CONTENT "$<JOIN:${qmlcache_resource_paths},\n>\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 |