diff options
Diffstat (limited to 'cmake/QtResourceHelpers.cmake')
-rw-r--r-- | cmake/QtResourceHelpers.cmake | 43 |
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() |