Merge remote-tracking branch 'origin/14.0'

Change-Id: Ic3c53630e16712b6493873d21485b726f0d06574
This commit is contained in:
Eike Ziller
2024-07-08 09:50:18 +02:00
97 changed files with 2201 additions and 1657 deletions

View File

@@ -26,6 +26,43 @@ namespace CMakeProjectManager::Internal {
BuildDirParameters::BuildDirParameters() = default;
static void updateCMakePathsFromQMake(QStringList &initialCMakeArguments)
{
const CMakeConfigItem qmake = CMakeConfigItem::fromString(
Utils::findOrDefault(initialCMakeArguments, [](const QString &arg) {
return arg.startsWith("-DQT_QMAKE_EXECUTABLE");
}));
const FilePath qmakeFilePath = FilePath::fromUtf8(qmake.value);
if (qmakeFilePath.isEmpty())
return;
// ~Qt/6.x/platform/bin/qmake -> ~Qt/6.x/platform
const QByteArray qmakePrefixPath = qmakeFilePath.parentDir().parentDir().toString().toUtf8();
const QByteArrayList cmakePathsVariables = {"CMAKE_PREFIX_PATH", "CMAKE_FIND_ROOT_PATH"};
for (const QByteArray &var : cmakePathsVariables) {
const QString varPrefix = QString("-D") + var;
auto it = std::find_if(
initialCMakeArguments.begin(),
initialCMakeArguments.end(),
[varPrefix](const QString &arg) { return arg.startsWith(varPrefix); });
if (it == initialCMakeArguments.end())
continue;
CMakeConfigItem cmakeVar = CMakeConfigItem::fromString(*it);
if (cmakeVar.isNull())
continue;
if (cmakeVar.value.isEmpty())
cmakeVar.value = qmakePrefixPath;
else
cmakeVar.value += ";" + qmakePrefixPath;
*it = cmakeVar.toString();
}
}
BuildDirParameters::BuildDirParameters(CMakeBuildSystem *buildSystem)
{
QTC_ASSERT(buildSystem, return);
@@ -40,6 +77,11 @@ BuildDirParameters::BuildDirParameters(CMakeBuildSystem *buildSystem)
});
initialCMakeArguments = Utils::filtered(expandedArguments,
[](const QString &s) { return !s.isEmpty(); });
const bool noQtInstallPrefix = expander->expand(QString("%{Qt:QT_INSTALL_PREFIX}")).isEmpty();
if (noQtInstallPrefix)
updateCMakePathsFromQMake(initialCMakeArguments);
configurationChangesArguments = Utils::transform(buildSystem->configurationChangesArguments(),
[this](const QString &s) {
return expander->expand(s);