summaryrefslogtreecommitdiffstats
path: root/cmake/QtResourceHelpers.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/QtResourceHelpers.cmake')
-rw-r--r--cmake/QtResourceHelpers.cmake43
1 files changed, 42 insertions, 1 deletions
diff --git a/cmake/QtResourceHelpers.cmake b/cmake/QtResourceHelpers.cmake
index 6e979e1d14..2df1fed50f 100644
--- a/cmake/QtResourceHelpers.cmake
+++ b/cmake/QtResourceHelpers.cmake
@@ -1,4 +1,19 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
function(qt_internal_add_resource target resourceName)
+ if(NOT TARGET "${target}")
+ message(FATAL_ERROR "${target} is not a target.")
+ endif()
+ qt_internal_is_skipped_test(skipped ${target})
+ if(skipped)
+ return()
+ endif()
+ qt_internal_is_in_test_batch(in_batch ${target})
+ if(in_batch)
+ _qt_internal_test_batch_target_name(target)
+ endif()
+
# Don't try to add resources when cross compiling, and the target is actually a host target
# (like a tool).
qt_is_imported_target("${target}" is_imported)
@@ -6,7 +21,11 @@ function(qt_internal_add_resource target resourceName)
return()
endif()
- qt_parse_all_arguments(arg "qt_add_resource" "" "PREFIX;LANG;BASE" "FILES" ${ARGN})
+ cmake_parse_arguments(PARSE_ARGV 2 arg
+ ""
+ "PREFIX;LANG;BASE;OUTPUT_TARGETS"
+ "FILES")
+ _qt_internal_validate_all_args_are_parsed(arg)
_qt_internal_process_resource(${target} ${resourceName}
PREFIX "${arg_PREFIX}"
@@ -26,9 +45,14 @@ function(qt_internal_add_resource target resourceName)
EXPORT_NAME_PREFIX "${INSTALL_CMAKE_NAMESPACE}${target}"
)
+ qt_internal_install_resource_pdb_files("${out_targets}")
qt_internal_record_rcc_object_files("${target}" "${out_targets}"
INSTALL_DIRECTORY "${INSTALL_LIBDIR}")
endif()
+
+ if (arg_OUTPUT_TARGETS)
+ set(${arg_OUTPUT_TARGETS} "${out_targets}" PARENT_SCOPE)
+ endif()
endfunction()
function(qt_internal_record_rcc_object_files target resource_targets)
@@ -90,3 +114,20 @@ function(qt_internal_record_rcc_object_files target resource_targets)
qt_internal_link_internal_platform_for_object_library("${out_target}")
endforeach()
endfunction()
+
+function(qt_internal_install_resource_pdb_files objlib_targets)
+ if(NOT MSVC OR NOT QT_WILL_INSTALL)
+ return()
+ endif()
+
+ foreach(target IN LISTS objlib_targets)
+ qt_internal_set_compile_pdb_names(${target})
+
+ get_target_property(generated_cpp_file_relative_path
+ ${target}
+ _qt_resource_generated_cpp_relative_path)
+ get_filename_component(rel_obj_file_dir "${generated_cpp_file_relative_path}" DIRECTORY)
+ qt_internal_install_pdb_files(${target}
+ "${INSTALL_LIBDIR}/objects-$<CONFIG>/${target}/${rel_obj_file_dir}")
+ endforeach()
+endfunction()