diff options
-rw-r--r-- | cmake/QtBuild.cmake | 14 | ||||
-rw-r--r-- | cmake/QtResource.cmake.in | 19 | ||||
-rw-r--r-- | src/corelib/Qt6CoreMacros.cmake | 4 |
3 files changed, 23 insertions, 14 deletions
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake index b4c28ac84d..b4e6cab3cd 100644 --- a/cmake/QtBuild.cmake +++ b/cmake/QtBuild.cmake @@ -2005,14 +2005,16 @@ function(add_qt_resource target resourceName) LANG "${arg_LANG}" BASE "${arg_BASE}" FILES ${arg_FILES} - OUTPUT_TARGET out_target + OUTPUT_TARGETS out_targets ) - if (out_target) - qt_install(TARGETS "${out_target}" - EXPORT "${INSTALL_CMAKE_NAMESPACE}${target}Targets" - DESTINATION ${INSTALL_LIBDIR} - ) + if (out_targets) + foreach(out_target IN LISTS out_targets) + qt_install(TARGETS "${out_target}" + EXPORT "${INSTALL_CMAKE_NAMESPACE}${target}Targets" + DESTINATION ${INSTALL_LIBDIR} + ) + endforeach() endif() endfunction() diff --git a/cmake/QtResource.cmake.in b/cmake/QtResource.cmake.in index 7d90d6be20..0c088bee8e 100644 --- a/cmake/QtResource.cmake.in +++ b/cmake/QtResource.cmake.in @@ -180,17 +180,18 @@ endfunction() # Alias settings for files need to be set via the QT_RESOURCE_ALIAS property # via the set_soure_files_properties() command. # -# When using this command with static libraries, a special target will be -# generated. Should you wish to perform additional processing on said target -# pass a value to the OUTPUT_TARGET parameter. +# When using this command with static libraries, one or more special targets +# will be generated. Should you wish to perform additional processing on these +# targets pass a value to the OUTPUT_TARGETS parameter. # function(QT@PROJECT_VERSION_MAJOR@_PROCESS_RESOURCE target resourceName) - cmake_parse_arguments(rcc "" "PREFIX;LANG;BASE;OUTPUT_TARGET" "FILES" ${ARGN}) + cmake_parse_arguments(rcc "" "PREFIX;LANG;BASE;OUTPUT_TARGETS" "FILES" ${ARGN}) string(REPLACE "/" "_" resourceName ${resourceName}) string(REPLACE "." "_" resourceName ${resourceName}) + set(output_targets "") # Apply base to all files if (rcc_BASE) foreach(file IN LISTS rcc_FILES) @@ -227,11 +228,12 @@ function(QT@PROJECT_VERSION_MAJOR@_PROCESS_RESOURCE target resourceName) ) if (NOT resources) - if (rcc_OUTPUT_TARGET) - set(${rcc_OUTPUT_TARGET} "${output_target}" PARENT_SCOPE) + if (rcc_OUTPUT_TARGETS) + set(${rcc_OUTPUT_TARGETS} "${output_target}" PARENT_SCOPE) endif() return() endif() + list(APPEND output_targets ${output_target}) set(generatedResourceFile "${CMAKE_CURRENT_BINARY_DIR}/generated_${newResourceName}.qrc") set(generatedSourceCode "${CMAKE_CURRENT_BINARY_DIR}/qrc_${newResourceName}.cpp") @@ -281,10 +283,11 @@ function(QT@PROJECT_VERSION_MAJOR@_PROCESS_RESOURCE target resourceName) # qml cache loader if(newResourceName STREQUAL resourceName) __qt_propagate_generated_resource(${target} ${resourceName} "${generatedSourceCode}" output_target) + list(APPEND output_targets ${output_target}) else() target_sources(${target} PRIVATE "${generatedSourceCode}") endif() - if (rcc_OUTPUT_TARGET) - set(${rcc_OUTPUT_TARGET} "${output_target}" PARENT_SCOPE) + if (rcc_OUTPUT_TARGETS) + set(${rcc_OUTPUT_TARGETS} "${output_targets}" PARENT_SCOPE) endif() endfunction() diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake index 060c69e8de..c4b6baa4ad 100644 --- a/src/corelib/Qt6CoreMacros.cmake +++ b/src/corelib/Qt6CoreMacros.cmake @@ -262,7 +262,11 @@ endfunction() function(QT6_ADD_RESOURCES outfiles ) if (TARGET ${outfiles}) + cmake_parse_arguments(arg "" "OUTPUT_TARGETS" "" ${ARGN}) QT6_PROCESS_RESOURCE(${ARGV}) + if (arg_OUTPUT_TARGETS) + set(${arg_OUTPUT_TARGETS} ${${arg_OUTPUT_TARGETS}} PARENT_SCOPE) + endif() else() set(options) set(oneValueArgs) |