forked from qt-creator/qt-creator
CMakePM: When using presets only use presets for candidates
Since the CMake presets is built upon Imports, when loading the presets it's better to only use the candidates from preset Kits and not any matching Kit that could handle the build directory. This makes working with CMake Presets a bit easier. Task-number: QTCREATORBUG-29535 Change-Id: I895e2e9162763e4cf3af5cdef5c9d5b228211fab Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
@@ -147,20 +147,31 @@ static QString displayPresetName(const QString &presetName)
|
|||||||
|
|
||||||
FilePaths CMakeProjectImporter::importCandidates()
|
FilePaths CMakeProjectImporter::importCandidates()
|
||||||
{
|
{
|
||||||
FilePaths candidates;
|
FilePaths candidates = presetCandidates();
|
||||||
|
|
||||||
candidates << scanDirectory(projectFilePath().absolutePath(), "build");
|
if (candidates.isEmpty()) {
|
||||||
|
candidates << scanDirectory(projectFilePath().absolutePath(), "build");
|
||||||
|
|
||||||
const QList<Kit *> kits = KitManager::kits();
|
const QList<Kit *> kits = KitManager::kits();
|
||||||
for (const Kit *k : kits) {
|
for (const Kit *k : kits) {
|
||||||
FilePath shadowBuildDirectory
|
FilePath shadowBuildDirectory
|
||||||
= CMakeBuildConfiguration::shadowBuildDirectory(projectFilePath(),
|
= CMakeBuildConfiguration::shadowBuildDirectory(projectFilePath(),
|
||||||
k,
|
k,
|
||||||
QString(),
|
QString(),
|
||||||
BuildConfiguration::Unknown);
|
BuildConfiguration::Unknown);
|
||||||
candidates << scanDirectory(shadowBuildDirectory.absolutePath(), QString());
|
candidates << scanDirectory(shadowBuildDirectory.absolutePath(), QString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const FilePaths finalists = Utils::filteredUnique(candidates);
|
||||||
|
qCInfo(cmInputLog) << "import candidates:" << finalists;
|
||||||
|
return finalists;
|
||||||
|
}
|
||||||
|
|
||||||
|
FilePaths CMakeProjectImporter::presetCandidates()
|
||||||
|
{
|
||||||
|
FilePaths candidates;
|
||||||
|
|
||||||
for (const auto &configPreset : m_project->presetsData().configurePresets) {
|
for (const auto &configPreset : m_project->presetsData().configurePresets) {
|
||||||
if (configPreset.hidden.value())
|
if (configPreset.hidden.value())
|
||||||
continue;
|
continue;
|
||||||
@@ -190,9 +201,7 @@ FilePaths CMakeProjectImporter::importCandidates()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const FilePaths finalists = Utils::filteredUnique(candidates);
|
return candidates;
|
||||||
qCInfo(cmInputLog) << "import candidates:" << finalists;
|
|
||||||
return finalists;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Target *CMakeProjectImporter::preferredTarget(const QList<Target *> &possibleTargets)
|
Target *CMakeProjectImporter::preferredTarget(const QList<Target *> &possibleTargets)
|
||||||
|
@@ -25,6 +25,7 @@ public:
|
|||||||
Utils::FilePaths importCandidates() final;
|
Utils::FilePaths importCandidates() final;
|
||||||
ProjectExplorer::Target *preferredTarget(const QList<ProjectExplorer::Target *> &possibleTargets) final;
|
ProjectExplorer::Target *preferredTarget(const QList<ProjectExplorer::Target *> &possibleTargets) final;
|
||||||
|
|
||||||
|
Utils::FilePaths presetCandidates();
|
||||||
private:
|
private:
|
||||||
QList<void *> examineDirectory(const Utils::FilePath &importPath,
|
QList<void *> examineDirectory(const Utils::FilePath &importPath,
|
||||||
QString *warningMessage) const final;
|
QString *warningMessage) const final;
|
||||||
|
Reference in New Issue
Block a user