CMake: Check for qtpaths6.exe existence during windows deployment

A qt installation might not contain the non-versioned the qtpaths.exe
installed, but keep the versioned qtpaths6.exe.

Try to use the versioned version before the non-versioned one.
If none exists, show a warning at deployment time.

Amends 571201603acc731330c9af42a3aca9cda41d38fd

Pick-to: 6.6 6.5
Fixes: QTBUG-122664
Task-number: QTBUG-119619
Change-Id: I23caf9ed3c7928fbab9657b0c0c64517dfc7d68e
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
(cherry picked from commit bcdc9d7059b6ecd4e0bfb44cf5a42d87c49e3edc)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Alexandru Croitor 2024-03-15 17:31:47 +01:00 committed by Qt Cherry-pick Bot
parent c9b5b40d14
commit 06ab1d3630
2 changed files with 30 additions and 2 deletions

View File

@ -443,8 +443,13 @@ function(qt6_deploy_runtime_dependencies)
# Specify path to target Qt's qtpaths .exe or .bat file, so windeployqt deploys the correct
# libraries when cross-compiling from x86_64 to arm64 windows.
if(__QT_DEPLOY_TARGET_QT_PATHS_PATH)
if(__QT_DEPLOY_TARGET_QT_PATHS_PATH AND EXISTS "${__QT_DEPLOY_TARGET_QT_PATHS_PATH}")
list(APPEND tool_options --qtpaths "${__QT_DEPLOY_TARGET_QT_PATHS_PATH}")
else()
message(WARNING
"No qtpaths executable found for target Qt "
"at: ${__QT_DEPLOY_TARGET_QT_PATHS_PATH}. "
"Libraries may not be deployed correctly.")
endif()
list(APPEND tool_options ${arg_DEPLOY_TOOL_OPTIONS})

View File

@ -2983,7 +2983,30 @@ function(_qt_internal_setup_deploy_support)
else()
set(qt_paths_ext "")
endif()
set(target_qtpaths_path "${QT6_INSTALL_PREFIX}/${QT6_INSTALL_BINS}/qtpaths${qt_paths_ext}")
set(target_qtpaths_path "")
set(qtpaths_prefix "${QT6_INSTALL_PREFIX}/${QT6_INSTALL_BINS}")
get_property(qt_major_version TARGET "${target}" PROPERTY INTERFACE_QT_MAJOR_VERSION)
if(qt_major_version)
set(target_qtpaths_with_major_version_path
"${qtpaths_prefix}/qtpaths${qt_major_version}${qt_paths_ext}")
if(EXISTS "${target_qtpaths_with_major_version_path}")
set(target_qtpaths_path "${target_qtpaths_with_major_version_path}")
endif()
endif()
if(NOT target_qtpaths_path)
set(target_qtpaths_path_without_version "${qtpaths_prefix}/qtpaths${qt_paths_ext}")
if(EXISTS "${target_qtpaths_path_without_version}")
set(target_qtpaths_path "${target_qtpaths_path_without_version}")
endif()
endif()
if(NOT target_qtpaths_path)
message(DEBUG "No qtpaths executable found for deployment purposes.")
endif()
file(GENERATE OUTPUT "${QT_DEPLOY_SUPPORT}" CONTENT
"cmake_minimum_required(VERSION 3.16...3.21)