From 2c219c01c1a2d1a23d527632ea1b575a25e6cd96 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Tue, 5 Jul 2022 09:48:08 +0200 Subject: [PATCH] QtSupport: (Windows/MinGW) Copy additional MinGW dlls in plugin tests The QtSupport plugin tests copy qmake into a separate directory. If that qmake is from a MinGW Qt, the respective .dlls are missing, and the test interrupts/blocks. Fixes: QTCREATORBUG-27793 Change-Id: I1ac02c31b6b74cf382285b8a5246292f82f979e3 Reviewed-by: Christian Stenger --- src/plugins/qtsupport/qtprojectimporter.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/plugins/qtsupport/qtprojectimporter.cpp b/src/plugins/qtsupport/qtprojectimporter.cpp index 9014aa71f08..8b177d2e167 100644 --- a/src/plugins/qtsupport/qtprojectimporter.cpp +++ b/src/plugins/qtsupport/qtprojectimporter.cpp @@ -281,12 +281,15 @@ static QStringList additionalFilesToCopy(const QtVersion *qt) } else if (HostOsInfo::isWindowsHost()) { const QString release = QString("bin/Qt%1Core.dll").arg(major); const QString debug = QString("bin/Qt%1Cored.dll").arg(major); + const QString mingwGcc("bin/libgcc_s_seh-1.dll"); + const QString mingwStd("bin/libstdc++-6.dll"); + const QString mingwPthread("bin/libwinpthread-1.dll"); const FilePath base = qt->qmakeFilePath().parentDir().parentDir(); - if (base.pathAppended(release).exists()) - return {release}; - if (base.pathAppended(debug).exists()) - return {debug}; - return {release}; + const QStringList allFiles = {release, debug, mingwGcc, mingwStd, mingwPthread}; + const QStringList existingFiles = Utils::filtered(allFiles, [&base](const QString &f) { + return base.pathAppended(f).exists(); + }); + return !existingFiles.empty() ? existingFiles : QStringList(release); } else if (HostOsInfo::isLinuxHost()) { const QString core = QString("lib/libQt%1Core.so.%1").arg(major); const QDir base(qt->qmakeFilePath().parentDir().parentDir().pathAppended("lib").toString());