aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru Croitor <alexandru.croitor@qt.io>2021-06-21 15:45:25 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-06-23 09:04:49 +0000
commit06a79325821b85e6a9d733f892a928e9db5ba1ab (patch)
tree069013377a6ac8590b9da143218b776ade38544b
parent4ca6503820d858d913c0ad3dae7f869bd6834ae8 (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.cmake11
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