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 <christian.stenger@qt.io>
This commit is contained in:
Alessandro Portale
2022-07-05 09:48:08 +02:00
parent 990737add7
commit 2c219c01c1

View File

@@ -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());