11 QString platformReleaseFilter(QStringLiteral(
"qwindows"));
13 platformReleaseFilter += infix;
14 QString platformFilter = platformReleaseFilter + u'*';
15 platformFilter += sharedLibrarySuffix();
17 const QFileInfoList &dlls =
18 platformPluginDir.entryInfoList(QStringList(platformFilter), QDir::Files);
19 if (dlls.size() == 1) {
20 const QFileInfo dllFi = dlls.first();
21 const bool hasDebugDlls =
22 dllFi.fileName() == QString(platformReleaseFilter + sharedLibrarySuffix()) ?
false
31 const Platform &platform)
33 QString errorMessage{};
37 filter += sharedLibrarySuffix();
39 const QFileInfoList &dlls =
40 pluginDir.entryInfoList(QStringList(filter), QDir::Files, QDir::Name);
42 for (
const QFileInfo &dllFi : dlls) {
43 QString plugin = dllFi.fileName();
44 const int dotIndex = plugin.lastIndexOf(u'.');
46 plugin = plugin.first(dotIndex);
48 if (libraryType == PluginDetection::DebugAndRelease) {
49 PeHeaderInfoStruct info;
50 if (!readPeExecutableInfo(dllFi.absoluteFilePath(), &errorMessage, &info)) {
51 std::wcerr <<
"Warning: Unable to read "
52 << QDir::toNativeSeparators(dllFi.absoluteFilePath()) <<
": "
55 if (info.isDebug && platformHasDebugSuffix(platform))
58 else if (libraryType == PluginDetection::DebugOnly)
61 if (!result.contains(plugin))
62 result.append(plugin);
79 const Platform &platform)
81 const QDir pluginTypesDir(qtPathsVariables.value(QLatin1String(
"QT_INSTALL_PLUGINS")));
82 const QDir platformPluginDir(pluginTypesDir.absolutePath() + QStringLiteral(
"/platforms"));
83 const QString infix(qtPathsVariables.value(QLatin1String(
qmakeInfixKey)));
84 const PluginDetection debugDetection = determinePluginLibrary(platformPluginDir, infix);
86 const QFileInfoList &pluginTypes =
87 pluginTypesDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
88 for (
const QFileInfo &pluginType : pluginTypes) {
89 const QString pluginTypeName = pluginType.baseName();
90 m_typeMap.insert({ pluginTypeName, QStringList{} });
91 const QStringList plugins =
92 findPluginNames(pluginType.absoluteFilePath(), debugDetection, platform);
93 m_typeMap.at(pluginTypeName) = plugins;
94 populatePluginToType(pluginTypeName, plugins);
96 if (!m_typeMap.size() || !m_pluginMap.size())
97 std::wcerr <<
"Warning: could not parse available plugins properly, plugin "
98 "inclusion/exclusion options will not work\n";