diff --git a/cmake/QtResourceHelpers.cmake b/cmake/QtResourceHelpers.cmake index 6e979e1d147..b51a83901d2 100644 --- a/cmake/QtResourceHelpers.cmake +++ b/cmake/QtResourceHelpers.cmake @@ -26,6 +26,7 @@ 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() @@ -90,3 +91,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-$/${target}/${rel_obj_file_dir}") + endforeach() +endfunction() diff --git a/cmake/QtTargetHelpers.cmake b/cmake/QtTargetHelpers.cmake index 206f3cb9216..b94a4bdae2b 100644 --- a/cmake/QtTargetHelpers.cmake +++ b/cmake/QtTargetHelpers.cmake @@ -640,7 +640,7 @@ endfunction() function(qt_internal_set_compile_pdb_names target) if(MSVC) get_target_property(target_type ${target} TYPE) - if(target_type STREQUAL "STATIC_LIBRARY") + if(target_type STREQUAL "STATIC_LIBRARY" OR target_type STREQUAL "OBJECT_LIBRARY") set_target_properties(${target} PROPERTIES COMPILE_PDB_NAME "${INSTALL_CMAKE_NAMESPACE}${target}") set_target_properties(${target} PROPERTIES COMPILE_PDB_NAME_DEBUG "${INSTALL_CMAKE_NAMESPACE}${target}d") endif() @@ -708,6 +708,19 @@ function(qt_internal_install_pdb_files target install_dir_path) qt_install(FILES "${compile_time_pdb_file_path}" DESTINATION "${install_dir_path}" OPTIONAL) + elseif(target_type STREQUAL "OBJECT_LIBRARY") + get_target_property(pdb_dir "${target}" COMPILE_PDB_OUTPUT_DIRECTORY) + if(NOT pdb_dir) + get_target_property(pdb_dir "${target}" BINARY_DIR) + if(QT_GENERATOR_IS_MULTI_CONFIG) + qt_path_join(pdb_dir "${pdb_dir}" "$") + endif() + endif() + set(pdb_name "${INSTALL_CMAKE_NAMESPACE}${target}$<$:d>.pdb") + qt_path_join(compile_time_pdb_file_path "${pdb_dir}" "${pdb_name}") + + qt_install(FILES "${compile_time_pdb_file_path}" + DESTINATION "${install_dir_path}" OPTIONAL) endif() endif() endfunction()