forked from qt-creator/qt-creator
CMakePM: Accept broken kits for CMakePresets
For CMakePresets if a preset is broken we should not create a preset kit for every build type. Instead reuse the broken kit created by the first build type. Task-number: QTCREATORBUG-28295 Change-Id: I038fbb23817834f59ac73ccd2f9953f1a412b656 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -652,22 +652,24 @@ bool CMakeProjectImporter::matchKit(void *directoryData, const Kit *k) const
|
|||||||
if (data->qt.qt && QtSupport::QtKitAspect::qtVersionId(k) != data->qt.qt->uniqueId())
|
if (data->qt.qt && QtSupport::QtKitAspect::qtVersionId(k) != data->qt.qt->uniqueId())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
const QList<Id> allLanguages = ToolChainManager::allLanguages();
|
bool haveCMakePreset = false;
|
||||||
for (const ToolChainDescription &tcd : data->toolChains) {
|
|
||||||
if (!Utils::contains(allLanguages, [&tcd](const Id& language) {return language == tcd.language;}))
|
|
||||||
continue;
|
|
||||||
ToolChain *tc = ToolChainKitAspect::toolChain(k, tcd.language);
|
|
||||||
if (!tc || !tc->matchesCompilerCommand(tcd.compilerPath)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!data->cmakePreset.isEmpty()) {
|
if (!data->cmakePreset.isEmpty()) {
|
||||||
auto presetConfigItem = CMakeConfigurationKitAspect::cmakePresetConfigItem(k);
|
auto presetConfigItem = CMakeConfigurationKitAspect::cmakePresetConfigItem(k);
|
||||||
if (data->cmakePreset != presetConfigItem.expandedValue(k))
|
if (data->cmakePreset != presetConfigItem.expandedValue(k))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
ensureBuildDirectory(*data, k);
|
ensureBuildDirectory(*data, k);
|
||||||
|
haveCMakePreset = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QList<Id> allLanguages = ToolChainManager::allLanguages();
|
||||||
|
for (const ToolChainDescription &tcd : data->toolChains) {
|
||||||
|
if (!Utils::contains(allLanguages, [&tcd](const Id& language) {return language == tcd.language;}))
|
||||||
|
continue;
|
||||||
|
ToolChain *tc = ToolChainKitAspect::toolChain(k, tcd.language);
|
||||||
|
if ((!tc || !tc->matchesCompilerCommand(tcd.compilerPath)) && !haveCMakePreset) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
qCDebug(cmInputLog) << k->displayName()
|
qCDebug(cmInputLog) << k->displayName()
|
||||||
|
Reference in New Issue
Block a user