From 15932205522fc695168f79869fc7d78d65596739 Mon Sep 17 00:00:00 2001 From: Morteza Jamshidi Date: Tue, 11 Mar 2025 15:26:33 +0100 Subject: [PATCH] Fix header generation issue with multiple qt6_add_win_app_sdk calls Use EXISTS path insead of using find_path because find_path finds the last target's generated headers, but we want to generate headers for each target separetely. Ammends 95c70bbc5bed906fc3d24eebfb00592d48b30a74 Pick-to: 6.9 Fixes: QTBUG-124800 Change-Id: Ib2b9ceefbc6d11f9bf67fdc6ce25dea3366afe3d Reviewed-by: Alexey Edelev --- cmake/QtPublicWindowsHelpers.cmake | 32 ++++++++++++++---------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/cmake/QtPublicWindowsHelpers.cmake b/cmake/QtPublicWindowsHelpers.cmake index cec0e65697b..e5199623428 100644 --- a/cmake/QtPublicWindowsHelpers.cmake +++ b/cmake/QtPublicWindowsHelpers.cmake @@ -33,11 +33,10 @@ function(qt6_add_win_app_sdk target) set(generated_headers_path "${CMAKE_CURRENT_BINARY_DIR}/winrt_includes") - find_path(WINAPPSDK_GENERATED_INCLUDE_DIR - NAMES winrt/Microsoft.UI.h - HINTS "${generated_headers_path}") + set(winappsdk_generated_include_dir "${generated_headers_path}/winrt") # If headers are not already generated - if(NOT WINAPPSDK_GENERATED_INCLUDE_DIR) + if(NOT EXISTS "${winappsdk_generated_include_dir}") + if(CPP_WIN_RT_PATH) set(cpp_win_rt_path "${CPP_WIN_RT_PATH}") elseif(DEFINED ENV{CPP_WIN_RT_PATH}) @@ -53,23 +52,26 @@ function(qt6_add_win_app_sdk target) message(FATAL_ERROR "cppwinrt.exe could not be found") endif() - find_path(WINAPPSDK_INCLUDE_DIR + find_path(winappsdk_include_dir NAMES MddBootstrap.h - HINTS ${win_app_sdk_root}/include) + HINTS ${win_app_sdk_root}/include + NO_CACHE) - find_library(WINAPPSDK_LIBRARY + find_library(winappsdk_library NAMES Microsoft.WindowsAppRuntime HINTS ${WINAPPSDK_LIBRARY_DIR} "${win_app_sdk_root}" "${win_app_sdk_root}/lib" - "${win_app_sdk_root}/lib/win10-${win_app_sdk_arch}") + "${win_app_sdk_root}/lib/win10-${win_app_sdk_arch}" + NO_CACHE) - find_library(WINAPPSDK_BOOTSTRAP_LIBRARY + find_library(winappsdk_bootstrap_library NAMES Microsoft.WindowsAppRuntime.Bootstrap HINTS ${WINAPPSDK_LIBRARY_DIR} "${win_app_sdk_root}" "${win_app_sdk_root}/lib" - "${win_app_sdk_root}/lib/win10-${win_app_sdk_arch}") + "${win_app_sdk_root}/lib/win10-${win_app_sdk_arch}" + NO_CACHE) - if(WINAPPSDK_INCLUDE_DIR AND WINAPPSDK_LIBRARY AND WINAPPSDK_BOOTSTRAP_LIBRARY) + if(winappsdk_include_dir AND winappsdk_library AND winappsdk_bootstrap_library) execute_process(COMMAND ${cpp_win_rt_path} -out "${generated_headers_path}" -ref sdk -in "${win_app_sdk_root}/lib/uap10.0" @@ -77,12 +79,8 @@ function(qt6_add_win_app_sdk target) -in "${win_app_sdk_root}/lib/uap10.0.18362" -in "${web_view_root}/lib") - find_path(WINAPPSDK_GENERATED_INCLUDE_DIR - NAMES winrt/Microsoft.UI.h - HINTS "${generated_headers_path}") - - if(NOT WINAPPSDK_GENERATED_INCLUDE_DIR) - message(FATAL_ERROR "Windows App SDK library headers generation failed") + if(NOT EXISTS "${winappsdk_generated_include_dir}") + message(FATAL_ERROR "Windows App SDK library headers generation failed.") endif() else() message(FATAL_ERROR "Windows App SDK library not found")