summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cmake/QtBuild.cmake30
-rw-r--r--cmake/QtFinishPrlFile.cmake7
-rw-r--r--src/corelib/Qt6CoreMacros.cmake1
3 files changed, 36 insertions, 2 deletions
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
index 3ab3e80e0d..036a291725 100644
--- a/cmake/QtBuild.cmake
+++ b/cmake/QtBuild.cmake
@@ -2918,6 +2918,15 @@ function(qt_generate_prl_file target install_dir)
return()
endif()
+ get_target_property(rcc_objects ${target} QT_RCC_OBJECTS)
+ if(rcc_objects)
+ if(QT_WILL_INSTALL)
+ list(TRANSFORM rcc_objects PREPEND "$$[QT_INSTALL_LIBS]/")
+ endif()
+ else()
+ unset(rcc_objects)
+ endif()
+
unset(prl_libs)
qt_collect_libs(${target} prl_libs)
@@ -2940,7 +2949,8 @@ function(qt_generate_prl_file target install_dir)
file(GENERATE
OUTPUT "${prl_file_name}"
CONTENT
- "QMAKE_PRL_BUILD_DIR = ${CMAKE_CURRENT_BINARY_DIR}
+ "RCC_OBJECTS = ${rcc_objects}
+QMAKE_PRL_BUILD_DIR = ${CMAKE_CURRENT_BINARY_DIR}
QMAKE_PRL_TARGET = $<TARGET_FILE_NAME:${target}>
QMAKE_PRL_CONFIG = ${prl_config}
QMAKE_PRL_VERSION = ${PROJECT_VERSION}
@@ -3483,6 +3493,24 @@ function(qt_add_resource target resourceName)
EXPORT "${INSTALL_CMAKE_NAMESPACE}${target}Targets"
DESTINATION ${INSTALL_LIBDIR}
)
+ foreach(out_target ${out_targets})
+ get_target_property(resource_name ${out_target} QT_RESOURCE_NAME)
+ if(NOT resource_name)
+ continue()
+ endif()
+ if(QT_WILL_INSTALL)
+ # Compute the install location of the rcc object file.
+ # This is the relative path below the install destination (install_prefix/lib).
+ # See CMake's computeInstallObjectDir function.
+ set(object_file_name "qrc_${resource_name}.cpp${CMAKE_CXX_OUTPUT_EXTENSION}")
+ qt_path_join(rcc_object_file_path
+ "objects-$<CONFIG>" ${out_target} .rcc "${object_file_name}")
+ else()
+ # In a non-prefix build we use the object file paths right away.
+ set(rcc_object_file_path $<TARGET_OBJECTS:$<TARGET_NAME:${out_target}>>)
+ endif()
+ set_property(TARGET ${target} APPEND PROPERTY QT_RCC_OBJECTS "${rcc_object_file_path}")
+ endforeach()
endif()
endfunction()
diff --git a/cmake/QtFinishPrlFile.cmake b/cmake/QtFinishPrlFile.cmake
index c7c913d4ae..4927761674 100644
--- a/cmake/QtFinishPrlFile.cmake
+++ b/cmake/QtFinishPrlFile.cmake
@@ -26,7 +26,9 @@ endfunction()
file(STRINGS "${IN_FILE}" lines)
set(content "")
foreach(line ${lines})
- if(line MATCHES "^QMAKE_PRL_LIBS_FOR_CMAKE = (.*)")
+ if(line MATCHES "^RCC_OBJECTS = (.*)")
+ set(rcc_objects ${CMAKE_MATCH_1})
+ elseif(line MATCHES "^QMAKE_PRL_LIBS_FOR_CMAKE = (.*)")
unset(adjusted_libs)
foreach(lib ${CMAKE_MATCH_1})
if("${lib}" STREQUAL "")
@@ -47,6 +49,9 @@ foreach(line ${lines})
list(APPEND adjusted_libs "${lib}")
endif()
endforeach()
+ if(rcc_objects)
+ list(APPEND adjusted_libs ${rcc_objects})
+ endif()
list(JOIN adjusted_libs " " adjusted_libs_for_qmake)
string(APPEND content "QMAKE_PRL_LIBS = ${adjusted_libs_for_qmake}\n")
string(APPEND content "QMAKE_PRL_LIBS_FOR_CMAKE = ${adjusted_libs}\n")
diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake
index f740fbe921..856740af3f 100644
--- a/src/corelib/Qt6CoreMacros.cmake
+++ b/src/corelib/Qt6CoreMacros.cmake
@@ -1042,6 +1042,7 @@ function(__qt_propagate_generated_resource target resource_name generated_source
if(type STREQUAL STATIC_LIBRARY)
set(resource_target "${target}_resources_${resourceName}")
add_library("${resource_target}" OBJECT "${generated_source_code}")
+ set_property(TARGET ${resource_target} APPEND PROPERTY QT_RESOURCE_NAME ${resourceName})
# Use TARGET_NAME genex to map to the correct prefixed target name when it is exported
# via qt_install(EXPORT), so that the consumers of the target can find the object library