Fix OUTPUT_TARGET propagation in qt6_add_resource()

Value was not being propagated to the parent scope when set.

This patch also changes OUTPUT_TARGET to OUTPUT_TARGETS since it is
possible that two targets can be generated.

Change-Id: If489a609ed363a319224fcd6c5a4fc878d0d8617
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Reviewed-by: Qt CMake Build Bot
This commit is contained in:
Leander Beernaert 2019-09-16 09:49:40 +02:00
parent 5884f793b9
commit 21dd3624a5
3 changed files with 23 additions and 14 deletions

View File

@ -2005,14 +2005,16 @@ function(add_qt_resource target resourceName)
LANG "${arg_LANG}" LANG "${arg_LANG}"
BASE "${arg_BASE}" BASE "${arg_BASE}"
FILES ${arg_FILES} FILES ${arg_FILES}
OUTPUT_TARGET out_target OUTPUT_TARGETS out_targets
) )
if (out_target) if (out_targets)
qt_install(TARGETS "${out_target}" foreach(out_target IN LISTS out_targets)
EXPORT "${INSTALL_CMAKE_NAMESPACE}${target}Targets" qt_install(TARGETS "${out_target}"
DESTINATION ${INSTALL_LIBDIR} EXPORT "${INSTALL_CMAKE_NAMESPACE}${target}Targets"
) DESTINATION ${INSTALL_LIBDIR}
)
endforeach()
endif() endif()
endfunction() endfunction()

View File

@ -180,17 +180,18 @@ endfunction()
# Alias settings for files need to be set via the QT_RESOURCE_ALIAS property # Alias settings for files need to be set via the QT_RESOURCE_ALIAS property
# via the set_soure_files_properties() command. # via the set_soure_files_properties() command.
# #
# When using this command with static libraries, a special target will be # When using this command with static libraries, one or more special targets
# generated. Should you wish to perform additional processing on said target # will be generated. Should you wish to perform additional processing on these
# pass a value to the OUTPUT_TARGET parameter. # targets pass a value to the OUTPUT_TARGETS parameter.
# #
function(QT@PROJECT_VERSION_MAJOR@_PROCESS_RESOURCE target resourceName) 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})
string(REPLACE "." "_" resourceName ${resourceName}) string(REPLACE "." "_" resourceName ${resourceName})
set(output_targets "")
# Apply base to all files # Apply base to all files
if (rcc_BASE) if (rcc_BASE)
foreach(file IN LISTS rcc_FILES) foreach(file IN LISTS rcc_FILES)
@ -227,11 +228,12 @@ function(QT@PROJECT_VERSION_MAJOR@_PROCESS_RESOURCE target resourceName)
) )
if (NOT resources) if (NOT resources)
if (rcc_OUTPUT_TARGET) if (rcc_OUTPUT_TARGETS)
set(${rcc_OUTPUT_TARGET} "${output_target}" PARENT_SCOPE) set(${rcc_OUTPUT_TARGETS} "${output_target}" PARENT_SCOPE)
endif() endif()
return() return()
endif() endif()
list(APPEND output_targets ${output_target})
set(generatedResourceFile "${CMAKE_CURRENT_BINARY_DIR}/generated_${newResourceName}.qrc") set(generatedResourceFile "${CMAKE_CURRENT_BINARY_DIR}/generated_${newResourceName}.qrc")
set(generatedSourceCode "${CMAKE_CURRENT_BINARY_DIR}/qrc_${newResourceName}.cpp") 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 # qml cache loader
if(newResourceName STREQUAL resourceName) if(newResourceName STREQUAL resourceName)
__qt_propagate_generated_resource(${target} ${resourceName} "${generatedSourceCode}" output_target) __qt_propagate_generated_resource(${target} ${resourceName} "${generatedSourceCode}" output_target)
list(APPEND output_targets ${output_target})
else() else()
target_sources(${target} PRIVATE "${generatedSourceCode}") target_sources(${target} PRIVATE "${generatedSourceCode}")
endif() endif()
if (rcc_OUTPUT_TARGET) if (rcc_OUTPUT_TARGETS)
set(${rcc_OUTPUT_TARGET} "${output_target}" PARENT_SCOPE) set(${rcc_OUTPUT_TARGETS} "${output_targets}" PARENT_SCOPE)
endif() endif()
endfunction() endfunction()

View File

@ -262,7 +262,11 @@ endfunction()
function(QT6_ADD_RESOURCES outfiles ) function(QT6_ADD_RESOURCES outfiles )
if (TARGET ${outfiles}) if (TARGET ${outfiles})
cmake_parse_arguments(arg "" "OUTPUT_TARGETS" "" ${ARGN})
QT6_PROCESS_RESOURCE(${ARGV}) QT6_PROCESS_RESOURCE(${ARGV})
if (arg_OUTPUT_TARGETS)
set(${arg_OUTPUT_TARGETS} ${${arg_OUTPUT_TARGETS}} PARENT_SCOPE)
endif()
else() else()
set(options) set(options)
set(oneValueArgs) set(oneValueArgs)