summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2021-05-20 18:15:49 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-05-22 20:32:36 +0000
commit142777a608d1169ad06c8c448655557db317afd7 (patch)
treef62b0bff8dc5c38fa88c36df83a6d4c913a7b0f9
parent9433614df262be8aadfc764c855d4dd8fc0fb612 (diff)
Support multiple equally named .qrc files in qt_add_big_resources
It is now possible to call qt_add_big_resources with multiple .qrc files that are in different directories but have the same file name. Before, this resulted in target name conflict errors. Fixes: QTBUG-93230 Change-Id: Ic3d9d6974a107163aeb7ada0b6f1fa113fb18de0 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit 895edcd7cdcf47ec9238d42db742f81c5c2eaeb9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/corelib/Qt6CoreMacros.cmake13
-rw-r--r--tests/auto/cmake/test_add_big_resource/CMakeLists.txt3
-rw-r--r--tests/auto/cmake/test_add_big_resource/subdir/subdir_resource_file.txt1
-rw-r--r--tests/auto/cmake/test_add_big_resource/subdir/test_add_big_resource.qrc5
4 files changed, 21 insertions, 1 deletions
diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake
index 7c43efff55..fc4c745c90 100644
--- a/src/corelib/Qt6CoreMacros.cmake
+++ b/src/corelib/Qt6CoreMacros.cmake
@@ -384,6 +384,19 @@ function(qt6_add_big_resources outfiles )
foreach(it ${rcc_files})
get_filename_component(outfilename ${it} NAME_WE)
+
+ # Provide unique targets and output file names
+ # in case we add multiple .qrc files with the same base name.
+ string(MAKE_C_IDENTIFIER "_qt_big_resource_count_${outfilename}" prop)
+ get_property(count GLOBAL PROPERTY ${prop})
+ if(count)
+ string(APPEND outfilename "_${count}")
+ else()
+ set(count 0)
+ endif()
+ math(EXPR count "${count} + 1")
+ set_property(GLOBAL PROPERTY ${prop} ${count})
+
get_filename_component(infile ${it} ABSOLUTE)
set(tmpoutfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${outfilename}tmp.cpp)
set(outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${outfilename}.o)
diff --git a/tests/auto/cmake/test_add_big_resource/CMakeLists.txt b/tests/auto/cmake/test_add_big_resource/CMakeLists.txt
index 49abde6650..59e5705925 100644
--- a/tests/auto/cmake/test_add_big_resource/CMakeLists.txt
+++ b/tests/auto/cmake/test_add_big_resource/CMakeLists.txt
@@ -9,7 +9,8 @@ find_package(Qt6Core REQUIRED)
qt_wrap_cpp(moc_files myobject.h)
-qt_add_big_resources(rcc_files "test_add_big_resource.qrc" "test_add_big_resource2.qrc")
+qt_add_big_resources(rcc_files "test_add_big_resource.qrc" "test_add_big_resource2.qrc"
+ "subdir/test_add_big_resource.qrc")
add_executable(myobject myobject.cpp ${moc_files} ${rcc_files})
target_link_libraries(myobject PRIVATE Qt::Core)
diff --git a/tests/auto/cmake/test_add_big_resource/subdir/subdir_resource_file.txt b/tests/auto/cmake/test_add_big_resource/subdir/subdir_resource_file.txt
new file mode 100644
index 0000000000..2c604a4f18
--- /dev/null
+++ b/tests/auto/cmake/test_add_big_resource/subdir/subdir_resource_file.txt
@@ -0,0 +1 @@
+Ken sent me.
diff --git a/tests/auto/cmake/test_add_big_resource/subdir/test_add_big_resource.qrc b/tests/auto/cmake/test_add_big_resource/subdir/test_add_big_resource.qrc
new file mode 100644
index 0000000000..9bf4f19823
--- /dev/null
+++ b/tests/auto/cmake/test_add_big_resource/subdir/test_add_big_resource.qrc
@@ -0,0 +1,5 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource prefix="/">
+ <file>subdir_resource_file.txt</file>
+</qresource>
+</RCC>