diff options
-rw-r--r-- | cmake/QtFrameworkHelpers.cmake | 47 |
1 files changed, 35 insertions, 12 deletions
diff --git a/cmake/QtFrameworkHelpers.cmake b/cmake/QtFrameworkHelpers.cmake index 8c39cb9b8f..f22dec1182 100644 --- a/cmake/QtFrameworkHelpers.cmake +++ b/cmake/QtFrameworkHelpers.cmake @@ -86,10 +86,12 @@ function(qt_copy_framework_headers target) set(out_files "") set(in_files "") + set(out_dirs "") set(copy_commands "") foreach(type IN ITEMS PUBLIC PRIVATE QPA RHI) set(in_files_${type} "") set(fw_output_header_dir "${output_dir_${type}}") + list(APPEND out_dirs "${fw_output_header_dir}") foreach(hdr IN LISTS arg_${type}) get_filename_component(in_file_path ${hdr} ABSOLUTE) get_filename_component(in_file_name ${hdr} NAME) @@ -106,19 +108,40 @@ function(qt_copy_framework_headers target) list(REMOVE_DUPLICATES out_files) list(REMOVE_DUPLICATES in_files) - add_custom_command( - OUTPUT "${output_dir}/${fw_versioned_header_dir}" ${out_files} - DEPENDS ${in_files} ${target}_sync_headers - COMMAND - ${CMAKE_COMMAND} -E copy_directory - "${module_build_interface_include_dir}/.syncqt_staging" - "${output_dir}/${fw_versioned_header_dir}" - ${copy_commands} - VERBATIM - COMMENT "Copy the ${target} header files to the framework directory" + + set(copy_fw_sync_headers_command + "${CMAKE_COMMAND}" -E copy_directory + "${module_build_interface_include_dir}/.syncqt_staging" + "${output_dir}/${fw_versioned_header_dir}" ) - set_property(TARGET ${target} APPEND PROPERTY - QT_COPIED_FRAMEWORK_HEADERS "${out_files}") + + if(CMAKE_GENERATOR MATCHES "^Ninja") + add_custom_command( + OUTPUT "${output_dir}/${fw_versioned_header_dir}" + DEPENDS ${target}_sync_headers + COMMAND ${copy_fw_sync_headers_command} + VERBATIM + ) + add_custom_target(${target}_copy_fw_sync_headers + DEPENDS "${output_dir}/${fw_versioned_header_dir}") + else() + add_custom_target(${target}_copy_fw_sync_headers + COMMAND ${copy_fw_sync_headers_command}) + endif() + + if(out_files) + add_custom_command( + OUTPUT ${out_files} + DEPENDS ${target}_copy_fw_sync_headers ${in_files} + COMMAND + ${CMAKE_COMMAND} -E make_directory ${out_dirs} + ${copy_commands} + VERBATIM + COMMENT "Copy the ${target} header files to the framework directory" + ) + set_property(TARGET ${target} APPEND PROPERTY + QT_COPIED_FRAMEWORK_HEADERS "${out_files}") + endif() endfunction() function(qt_internal_generate_fake_framework_header target) |