aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2020-01-09 18:42:28 +0100
committerhjk <hjk@qt.io>2020-01-14 13:56:10 +0000
commitb4ee6eb3c049167cf000298b819e18ebd99d34d7 (patch)
treef7e50fff823ce8da72b690f2b6242efc89158af0
parent27bbe6462b0ec5e18b567b36afb6529cf0d6a036 (diff)
ProjectExplorer: Move some of the BuildInfo setup code to central places
Change-Id: I8893366acb187ea1a94a8ca272ded2c46cb521d1 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp5
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp11
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h4
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp10
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeprojectimporter.h3
-rw-r--r--src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp5
-rw-r--r--src/plugins/genericprojectmanager/genericbuildconfiguration.cpp5
-rw-r--r--src/plugins/nim/project/nimblebuildconfiguration.cpp5
-rw-r--r--src/plugins/nim/project/nimbuildconfiguration.cpp5
-rw-r--r--src/plugins/projectexplorer/buildconfiguration.cpp14
-rw-r--r--src/plugins/projectexplorer/buildinfo.h9
-rw-r--r--src/plugins/projectexplorer/buildsettingspropertiespage.cpp2
-rw-r--r--src/plugins/projectexplorer/project.cpp4
-rw-r--r--src/plugins/projectexplorer/projectimporter.cpp7
-rw-r--r--src/plugins/projectexplorer/projectimporter.h2
-rw-r--r--src/plugins/projectexplorer/projectwindow.cpp2
-rw-r--r--src/plugins/projectexplorer/targetsetupwidget.cpp12
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp12
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildconfiguration.h3
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectimporter.cpp13
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectimporter.h3
-rw-r--r--src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp100
-rw-r--r--src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h4
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeprojectimporter.cpp9
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeprojectimporter.h3
-rw-r--r--src/plugins/qtsupport/qtprojectimporter.cpp5
26 files changed, 114 insertions, 143 deletions
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp
index f2b069d6d1..56d22a52ed 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp
+++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp
@@ -80,12 +80,11 @@ AutotoolsBuildConfigurationFactory::AutotoolsBuildConfigurationFactory()
setSupportedProjectType(Constants::AUTOTOOLS_PROJECT_ID);
setSupportedProjectMimeTypeName(Constants::MAKEFILE_MIMETYPE);
- setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) {
- BuildInfo info(this);
+ setBuildGenerator([](const Kit *, const FilePath &projectPath, bool forSetup) {
+ BuildInfo info;
info.typeName = BuildConfiguration::tr("Build");
info.buildDirectory = forSetup
? FilePath::fromString(projectPath.toFileInfo().absolutePath()) : projectPath;
- info.kitId = k->id();
if (forSetup) {
//: The name of the build configuration created by default for a autotools project.
info.displayName = BuildConfiguration::tr("Default");
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
index 8f5565f908..4a03f2167e 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
@@ -409,13 +409,13 @@ CMakeBuildConfigurationFactory::CMakeBuildConfigurationFactory()
setSupportedProjectType(CMakeProjectManager::Constants::CMAKEPROJECT_ID);
setSupportedProjectMimeTypeName(Constants::CMAKEPROJECTMIMETYPE);
- setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) {
+ setBuildGenerator([](const Kit *k, const FilePath &projectPath, bool forSetup) {
QList<BuildInfo> result;
FilePath path = forSetup ? Project::projectDirectory(projectPath) : projectPath;
for (int type = BuildTypeDebug; type != BuildTypeLast; ++type) {
- BuildInfo info = createBuildInfo(k, path.toString(), BuildType(type));
+ BuildInfo info = createBuildInfo(BuildType(type));
if (forSetup) {
info.buildDirectory = CMakeBuildConfiguration::shadowBuildDirectory(projectPath,
k,
@@ -457,12 +457,9 @@ BuildConfiguration::BuildType CMakeBuildConfigurationFactory::cmakeBuildTypeToBu
return BuildConfiguration::Unknown;
}
-BuildInfo CMakeBuildConfigurationFactory::createBuildInfo(const Kit *k,
- const QString &,
- BuildType buildType) const
+BuildInfo CMakeBuildConfigurationFactory::createBuildInfo(BuildType buildType)
{
- BuildInfo info(this);
- info.kitId = k->id();
+ BuildInfo info;
switch (buildType) {
case BuildTypeNone:
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
index a495d135e4..ad9bcfb6cb 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h
@@ -124,9 +124,7 @@ public:
static ProjectExplorer::BuildConfiguration::BuildType cmakeBuildTypeToBuildType(const BuildType &in);
private:
- ProjectExplorer::BuildInfo createBuildInfo(const ProjectExplorer::Kit *k,
- const QString &sourceDir,
- BuildType buildType) const;
+ static ProjectExplorer::BuildInfo createBuildInfo(BuildType buildType);
friend class CMakeProjectImporter;
};
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp
index 1cda2387f4..65ded4e4b6 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp
@@ -335,17 +335,13 @@ Kit *CMakeProjectImporter::createKit(void *directoryData) const
});
}
-const QList<BuildInfo> CMakeProjectImporter::buildInfoListForKit(const Kit *k, void *directoryData) const
+const QList<BuildInfo> CMakeProjectImporter::buildInfoList(void *directoryData) const
{
auto data = static_cast<const DirectoryData *>(directoryData);
- auto factory = dynamic_cast<CMakeBuildConfigurationFactory *>(
- BuildConfigurationFactory::find(k, projectFilePath()));
- if (!factory)
- return {};
// create info:
- BuildInfo info = factory->createBuildInfo(k, projectDirectory().toString(),
- CMakeBuildConfigurationFactory::buildTypeFromByteArray(data->cmakeBuildType));
+ BuildInfo info = CMakeBuildConfigurationFactory::createBuildInfo(
+ CMakeBuildConfigurationFactory::buildTypeFromByteArray(data->cmakeBuildType));
info.buildDirectory = data->buildDirectory;
info.displayName = info.typeName;
diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h
index 9940da3723..fa1f4e4df7 100644
--- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h
+++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.h
@@ -44,8 +44,7 @@ private:
QList<void *> examineDirectory(const Utils::FilePath &importPath) const final;
bool matchKit(void *directoryData, const ProjectExplorer::Kit *k) const final;
ProjectExplorer::Kit *createKit(void *directoryData) const final;
- const QList<ProjectExplorer::BuildInfo> buildInfoListForKit(const ProjectExplorer::Kit *k,
- void *directoryData) const final;
+ const QList<ProjectExplorer::BuildInfo> buildInfoList(void *directoryData) const final;
struct CMakeToolData {
bool isTemporary = false;
diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp
index a5629ce2a1..41bd6c4c24 100644
--- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp
+++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp
@@ -539,14 +539,13 @@ CompilationDatabaseBuildConfigurationFactory::CompilationDatabaseBuildConfigurat
setSupportedProjectType(Constants::COMPILATIONDATABASEPROJECT_ID);
setSupportedProjectMimeTypeName(Constants::COMPILATIONDATABASEMIMETYPE);
- setBuildGenerator([this](const Kit *kit, const FilePath &projectPath, bool) {
+ setBuildGenerator([](const Kit *, const FilePath &projectPath, bool) {
const QString name = BuildConfiguration::tr("Release");
- ProjectExplorer::BuildInfo info(this);
+ ProjectExplorer::BuildInfo info;
info.typeName = name;
info.displayName = name;
info.buildType = BuildConfiguration::Release;
info.buildDirectory = projectPath.parentDir();
- info.kitId = kit->id();
return QList<BuildInfo>{info};
});
}
diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
index cab18f9082..f241a3d317 100644
--- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
+++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp
@@ -75,11 +75,10 @@ GenericBuildConfigurationFactory::GenericBuildConfigurationFactory()
setSupportedProjectType(Constants::GENERICPROJECT_ID);
setSupportedProjectMimeTypeName(Constants::GENERICMIMETYPE);
- setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) {
- BuildInfo info(this);
+ setBuildGenerator([](const Kit *, const FilePath &projectPath, bool forSetup) {
+ BuildInfo info;
info.typeName = BuildConfiguration::tr("Build");
info.buildDirectory = forSetup ? Project::projectDirectory(projectPath) : projectPath;
- info.kitId = k->id();
if (forSetup) {
//: The name of the build configuration created by default for a generic project.
diff --git a/src/plugins/nim/project/nimblebuildconfiguration.cpp b/src/plugins/nim/project/nimblebuildconfiguration.cpp
index 336545c201..10ef13bbce 100644
--- a/src/plugins/nim/project/nimblebuildconfiguration.cpp
+++ b/src/plugins/nim/project/nimblebuildconfiguration.cpp
@@ -86,11 +86,10 @@ NimbleBuildConfigurationFactory::NimbleBuildConfigurationFactory()
setSupportedProjectType(Constants::C_NIMBLEPROJECT_ID);
setSupportedProjectMimeTypeName(Constants::C_NIMBLE_MIMETYPE);
- setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) {
+ setBuildGenerator([](const Kit *, const FilePath &projectPath, bool forSetup) {
const auto oneBuild = [&](BuildConfiguration::BuildType buildType, const QString &typeName) {
- BuildInfo info(this);
+ BuildInfo info;
info.buildType = buildType;
- info.kitId = k->id();
info.typeName = typeName;
if (forSetup) {
info.displayName = info.typeName;
diff --git a/src/plugins/nim/project/nimbuildconfiguration.cpp b/src/plugins/nim/project/nimbuildconfiguration.cpp
index 29eeb31d1e..ea249956cf 100644
--- a/src/plugins/nim/project/nimbuildconfiguration.cpp
+++ b/src/plugins/nim/project/nimbuildconfiguration.cpp
@@ -135,11 +135,10 @@ NimBuildConfigurationFactory::NimBuildConfigurationFactory()
setSupportedProjectType(Constants::C_NIMPROJECT_ID);
setSupportedProjectMimeTypeName(Constants::C_NIM_PROJECT_MIMETYPE);
- setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) {
+ setBuildGenerator([](const Kit *k, const FilePath &projectPath, bool forSetup) {
const auto oneBuild = [&](BuildConfiguration::BuildType buildType, const QString &typeName) {
- BuildInfo info(this);
+ BuildInfo info;
info.buildType = buildType;
- info.kitId = k->id();
info.typeName = typeName;
if (forSetup) {
info.displayName = info.typeName;
diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp
index 35f2e908c4..a6262cf69d 100644
--- a/src/plugins/projectexplorer/buildconfiguration.cpp
+++ b/src/plugins/projectexplorer/buildconfiguration.cpp
@@ -509,14 +509,24 @@ const Tasks BuildConfigurationFactory::reportIssues(ProjectExplorer::Kit *kit, c
const QList<BuildInfo> BuildConfigurationFactory::allAvailableBuilds(const Target *parent) const
{
QTC_ASSERT(m_buildGenerator, return {});
- return m_buildGenerator(parent->kit(), parent->project()->projectFilePath(), false);
+ QList<BuildInfo> list = m_buildGenerator(parent->kit(), parent->project()->projectFilePath(), false);
+ for (BuildInfo &info : list) {
+ info.factory = this;
+ info.kitId = parent->kit()->id();
+ }
+ return list;
}
const QList<BuildInfo>
BuildConfigurationFactory::allAvailableSetups(const Kit *k, const FilePath &projectPath) const
{
QTC_ASSERT(m_buildGenerator, return {});
- return m_buildGenerator(k, projectPath, /* forSetup = */ true);
+ QList<BuildInfo> list = m_buildGenerator(k, projectPath, /* forSetup = */ true);
+ for (BuildInfo &info : list) {
+ info.factory = this;
+ info.kitId = k->id();
+ }
+ return list;
}
bool BuildConfigurationFactory::supportsTargetDeviceType(Core::Id id) const
diff --git a/src/plugins/projectexplorer/buildinfo.h b/src/plugins/projectexplorer/buildinfo.h
index 41dfd78180..e54285af35 100644
--- a/src/plugins/projectexplorer/buildinfo.h
+++ b/src/plugins/projectexplorer/buildinfo.h
@@ -28,7 +28,6 @@
#include "projectexplorer_export.h"
#include "buildconfiguration.h"
-#include "task.h"
#include <coreplugin/id.h>
#include <utils/fileutils.h>
@@ -40,9 +39,7 @@ class BuildConfigurationFactory;
class PROJECTEXPLORER_EXPORT BuildInfo final
{
public:
- BuildInfo(const BuildConfigurationFactory *f = nullptr) : m_factory(f) { }
-
- const BuildConfigurationFactory *factory() const { return m_factory; }
+ BuildInfo() = default;
QString displayName;
QString typeName;
@@ -51,11 +48,11 @@ public:
BuildConfiguration::BuildType buildType = BuildConfiguration::Unknown;
QVariant extraInfo;
- const BuildConfigurationFactory *m_factory = nullptr;
+ const BuildConfigurationFactory *factory = nullptr;
bool operator==(const BuildInfo &o) const
{
- return m_factory == o.m_factory
+ return factory == o.factory
&& displayName == o.displayName && typeName == o.typeName
&& buildDirectory == o.buildDirectory && kitId == o.kitId
&& buildType == o.buildType;
diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
index f5d33a7b4e..924adfa678 100644
--- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
+++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp
@@ -231,7 +231,7 @@ void BuildSettingsWidget::createConfiguration(const BuildInfo &info_)
return;
}
- BuildConfiguration *bc = info.factory()->create(m_target, info);
+ BuildConfiguration *bc = info.factory->create(m_target, info);
if (!bc)
return;
diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp
index e5fd5e9f4a..99afeb3df0 100644
--- a/src/plugins/projectexplorer/project.cpp
+++ b/src/plugins/projectexplorer/project.cpp
@@ -932,10 +932,10 @@ void Project::setup(const QList<BuildInfo> &infoList)
toRegister.emplace_back(std::move(newTarget));
}
- if (!info.factory())
+ if (!info.factory)
continue;
- if (BuildConfiguration *bc = info.factory()->create(t, info))
+ if (BuildConfiguration *bc = info.factory->create(t, info))
t->addBuildConfiguration(bc);
}
for (std::unique_ptr<Target> &t : toRegister) {
diff --git a/src/plugins/projectexplorer/projectimporter.cpp b/src/plugins/projectexplorer/projectimporter.cpp
index 1a2dbbfcad..d420758599 100644
--- a/src/plugins/projectexplorer/projectimporter.cpp
+++ b/src/plugins/projectexplorer/projectimporter.cpp
@@ -132,13 +132,16 @@ const QList<BuildInfo> ProjectImporter::import(const Utils::FilePath &importPath
foreach (Kit *k, kitList) {
qCDebug(log) << "Creating buildinfos for kit" << k->displayName();
- const QList<BuildInfo> infoList = buildInfoListForKit(k, data);
+ const QList<BuildInfo> infoList = buildInfoList(data);
if (infoList.isEmpty()) {
qCDebug(log) << "No build infos for kit" << k->displayName();
continue;
}
- for (const BuildInfo &i : infoList) {
+ auto factory = BuildConfigurationFactory::find(k, projectFilePath());
+ for (BuildInfo i : infoList) {
+ i.kitId = k->id();
+ i.factory = factory;
if (!result.contains(i))
result += i;
}
diff --git a/src/plugins/projectexplorer/projectimporter.h b/src/plugins/projectexplorer/projectimporter.h
index 20a2700683..62851c95b4 100644
--- a/src/plugins/projectexplorer/projectimporter.h
+++ b/src/plugins/projectexplorer/projectimporter.h
@@ -92,7 +92,7 @@ protected:
// will get one of the results from examineDirectory
virtual Kit *createKit(void *directoryData) const = 0;
// will get one of the results from examineDirectory
- virtual const QList<BuildInfo> buildInfoListForKit(const Kit *k, void *directoryData) const = 0;
+ virtual const QList<BuildInfo> buildInfoList(void *directoryData) const = 0;
virtual void deleteDirectoryData(void *directoryData) const = 0;
diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp
index 3314b78dde..f358200c5d 100644
--- a/src/plugins/projectexplorer/projectwindow.cpp
+++ b/src/plugins/projectexplorer/projectwindow.cpp
@@ -583,7 +583,7 @@ public:
target = project->addTargetForKit(KitManager::kit(info.kitId));
if (target) {
projectImporter->makePersistent(target->kit());
- BuildConfiguration *bc = info.factory()->create(target, info);
+ BuildConfiguration *bc = info.factory->create(target, info);
QTC_ASSERT(bc, continue);
target->addBuildConfiguration(bc);
diff --git a/src/plugins/projectexplorer/targetsetupwidget.cpp b/src/plugins/projectexplorer/targetsetupwidget.cpp
index ddcda6d8ff..31b3f5d6af 100644
--- a/src/plugins/projectexplorer/targetsetupwidget.cpp
+++ b/src/plugins/projectexplorer/targetsetupwidget.cpp
@@ -151,7 +151,7 @@ void TargetSetupWidget::addBuildInfo(const BuildInfo &info, bool isImport)
store.isEnabled = true;
++m_selected;
- if (info.factory()) {
+ if (info.factory) {
store.checkbox = new QCheckBox;
store.checkbox->setText(info.displayName);
store.checkbox->setChecked(store.isEnabled);
@@ -250,7 +250,7 @@ const QList<BuildInfo> TargetSetupWidget::buildInfoList(const Kit *k, const File
if (auto factory = BuildConfigurationFactory::find(k, projectPath))
return factory->allAvailableSetups(k, projectPath);
- BuildInfo info(nullptr);
+ BuildInfo info;
info.kitId = k->id();
return {info};
}
@@ -294,7 +294,7 @@ void TargetSetupWidget::clear()
void TargetSetupWidget::updateDefaultBuildDirectories()
{
for (const BuildInfo &buildInfo : buildInfoList(m_kit, m_projectPath)) {
- if (!buildInfo.factory())
+ if (!buildInfo.factory)
continue;
bool found = false;
for (BuildInfoStore &buildInfoStore : m_infoStore) {
@@ -364,13 +364,13 @@ void TargetSetupWidget::reportIssues(int index)
QPair<Task::TaskType, QString> TargetSetupWidget::findIssues(const BuildInfo &info)
{
- if (m_projectPath.isEmpty() || !info.factory())
+ if (m_projectPath.isEmpty() || !info.factory)
return qMakePair(Task::Unknown, QString());
QString buildDir = info.buildDirectory.toString();
Tasks issues;
- if (info.factory())
- issues = info.factory()->reportIssues(m_kit, m_projectPath.toString(), buildDir);
+ if (info.factory)
+ issues = info.factory->reportIssues(m_kit, m_projectPath.toString(), buildDir);
QString text;
Task::TaskType highestType = Task::Unknown;
diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
index 02c306c15e..9e297c470d 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
+++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp
@@ -428,7 +428,7 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory()
if (forSetup) {
- BuildInfo info = createBuildInfo(k, BuildConfiguration::Debug);
+ BuildInfo info = createBuildInfo(BuildConfiguration::Debug);
//: The name of the debug build configuration created by default for a qbs project.
info.displayName = BuildConfiguration::tr("Debug");
//: Non-ASCII characters in directory suffix may cause build issues.
@@ -436,7 +436,7 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory()
info.buildDirectory = defaultBuildDirectory(projectPath, k, dbg, info.buildType);
result << info;
- info = createBuildInfo(k, BuildConfiguration::Release);
+ info = createBuildInfo(BuildConfiguration::Release);
//: The name of the release build configuration created by default for a qbs project.
info.displayName = BuildConfiguration::tr("Release");
//: Non-ASCII characters in directory suffix may cause build issues.
@@ -446,7 +446,7 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory()
} else {
- result << createBuildInfo(k, BuildConfiguration::Debug);
+ result << createBuildInfo(BuildConfiguration::Debug);
}
@@ -454,11 +454,9 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory()
});
}
-BuildInfo QbsBuildConfigurationFactory::createBuildInfo(const Kit *k,
- BuildConfiguration::BuildType type) const
+BuildInfo QbsBuildConfigurationFactory::createBuildInfo(BuildConfiguration::BuildType type) const
{
- BuildInfo info(this);
- info.kitId = k->id();
+ BuildInfo info;
info.buildType = type;
info.typeName = BuildConfiguration::tr("Build");
QVariantMap config;
diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h
index c540acff73..c6217835c0 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h
+++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h
@@ -101,8 +101,7 @@ public:
QbsBuildConfigurationFactory();
private:
- ProjectExplorer::BuildInfo createBuildInfo(const ProjectExplorer::Kit *k,
- ProjectExplorer::BuildConfiguration::BuildType type) const;
+ ProjectExplorer::BuildInfo createBuildInfo(ProjectExplorer::BuildConfiguration::BuildType type) const;
};
} // namespace Internal
diff --git a/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp b/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp
index 01acfec13e..8ff3371eef 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp
+++ b/src/plugins/qbsprojectmanager/qbsprojectimporter.cpp
@@ -218,25 +218,18 @@ Kit *QbsProjectImporter::createKit(void *directoryData) const
});
}
-const QList<BuildInfo> QbsProjectImporter::buildInfoListForKit(const Kit *k, void *directoryData) const
+const QList<BuildInfo> QbsProjectImporter::buildInfoList(void *directoryData) const
{
- qCDebug(qbsPmLog) << "creating build info for kit" << k->displayName();
- const auto factory = dynamic_cast<QbsBuildConfigurationFactory *>(
- BuildConfigurationFactory::find(k, projectFilePath()));
- if (!factory) {
- qCDebug(qbsPmLog) << "no build config factory found";
- return {};
- }
const auto * const bgData = static_cast<BuildGraphData *>(directoryData);
- BuildInfo info(factory);
+ BuildInfo info;
info.displayName = bgData->bgFilePath.toFileInfo().completeBaseName();
info.buildType = bgData->buildVariant == "debug"
? BuildConfiguration::Debug : BuildConfiguration::Release;
- info.kitId = k->id();
info.buildDirectory = bgData->bgFilePath.parentDir().parentDir();
QVariantMap config = bgData->overriddenProperties;
config.insert("configName", info.displayName);
info.extraInfo = config;
+ qCDebug(qbsPmLog) << "creating build info for " << info.displayName << ' ' << bgData->buildVariant;
return {info};
}
diff --git a/src/plugins/qbsprojectmanager/qbsprojectimporter.h b/src/plugins/qbsprojectmanager/qbsprojectimporter.h
index 345e57522b..49fba42f28 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectimporter.h
+++ b/src/plugins/qbsprojectmanager/qbsprojectimporter.h
@@ -42,8 +42,7 @@ private:
QList<void *> examineDirectory(const Utils::FilePath &importPath) const override;
bool matchKit(void *directoryData, const ProjectExplorer::Kit *k) const override;
ProjectExplorer::Kit *createKit(void *directoryData) const override;
- const QList<ProjectExplorer::BuildInfo> buildInfoListForKit(const ProjectExplorer::Kit *k,
- void *directoryData) const override;
+ const QList<ProjectExplorer::BuildInfo> buildInfoList(void *directoryData) const override;
void deleteDirectoryData(void *directoryData) const override;
};
diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp
index ca2680deec..08ad2926ad 100644
--- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.cpp
@@ -692,60 +692,13 @@ QString QmakeBuildConfiguration::extractSpecFromArguments(QString *args,
\class QmakeBuildConfigurationFactory
*/
-QmakeBuildConfigurationFactory::QmakeBuildConfigurationFactory()
-{
- registerBuildConfiguration<QmakeBuildConfiguration>(Constants::QMAKE_BC_ID);
- setSupportedProjectType(Constants::QMAKEPROJECT_ID);
- setSupportedProjectMimeTypeName(Constants::PROFILE_MIMETYPE);
- setIssueReporter([](Kit *k, const QString &projectPath, const QString &buildDir) {
- QtSupport::BaseQtVersion *version = QtSupport::QtKitAspect::qtVersion(k);
- Tasks issues;
- if (version)
- issues << version->reportIssues(projectPath, buildDir);
- if (QmakeSettings::warnAgainstUnalignedBuildDir()
- && !QmakeBuildConfiguration::isBuildDirAtSafeLocation(
- QFileInfo(projectPath).absoluteDir().path(), QDir(buildDir).absolutePath())) {
- issues.append(Task(Task::Warning, QmakeBuildConfiguration::unalignedBuildDirWarning(),
- Utils::FilePath(), -1,
- ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM));
- }
- return issues;
- });
-
- setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) {
- QList<BuildInfo> result;
-
- BaseQtVersion *qtVersion = QtKitAspect::qtVersion(k);
-
- if (forSetup && (!qtVersion || !qtVersion->isValid()))
- return result;
-
- const auto addBuild = [&](BuildConfiguration::BuildType buildType) {
- BuildInfo info = createBuildInfo(k, projectPath, buildType);
- if (!forSetup) {
- info.displayName.clear(); // ask for a name
- info.buildDirectory.clear(); // This depends on the displayName
- }
- result << info;
- };
-
- addBuild(BuildConfiguration::Debug);
- addBuild(BuildConfiguration::Release);
- if (qtVersion && qtVersion->qtVersion().majorVersion > 4)
- addBuild(BuildConfiguration::Profile);
-
- return result;
- });
-}
-
-BuildInfo QmakeBuildConfigurationFactory::createBuildInfo(const Kit *k,
- const FilePath &projectPath,
- BuildConfiguration::BuildType type) const
+static BuildInfo createBuildInfo(const Kit *k, const FilePath &projectPath,
+ BuildConfiguration::BuildType type)
{
const BuildPropertiesSettings &settings = ProjectExplorerPlugin::buildPropertiesSettings();
BaseQtVersion *version = QtKitAspect::qtVersion(k);
QmakeExtraBuildInfo extraInfo;
- BuildInfo info(this);
+ BuildInfo info;
QString suffix;
if (type == BuildConfiguration::Release) {
@@ -783,7 +736,6 @@ BuildInfo QmakeBuildConfigurationFactory::createBuildInfo(const Kit *k,
}
info.typeName = info.displayName;
// Leave info.buildDirectory unset;
- info.kitId = k->id();
// check if this project is in the source directory:
if (version && version->isInSourceDirectory(projectPath)) {
@@ -804,6 +756,52 @@ BuildInfo QmakeBuildConfigurationFactory::createBuildInfo(const Kit *k,
return info;
}
+QmakeBuildConfigurationFactory::QmakeBuildConfigurationFactory()
+{
+ registerBuildConfiguration<QmakeBuildConfiguration>(Constants::QMAKE_BC_ID);
+ setSupportedProjectType(Constants::QMAKEPROJECT_ID);
+ setSupportedProjectMimeTypeName(Constants::PROFILE_MIMETYPE);
+ setIssueReporter([](Kit *k, const QString &projectPath, const QString &buildDir) {
+ QtSupport::BaseQtVersion *version = QtSupport::QtKitAspect::qtVersion(k);
+ Tasks issues;
+ if (version)
+ issues << version->reportIssues(projectPath, buildDir);
+ if (QmakeSettings::warnAgainstUnalignedBuildDir()
+ && !QmakeBuildConfiguration::isBuildDirAtSafeLocation(
+ QFileInfo(projectPath).absoluteDir().path(), QDir(buildDir).absolutePath())) {
+ issues.append(Task(Task::Warning, QmakeBuildConfiguration::unalignedBuildDirWarning(),
+ Utils::FilePath(), -1,
+ ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM));
+ }
+ return issues;
+ });
+
+ setBuildGenerator([](const Kit *k, const FilePath &projectPath, bool forSetup) {
+ QList<BuildInfo> result;
+
+ BaseQtVersion *qtVersion = QtKitAspect::qtVersion(k);
+
+ if (forSetup && (!qtVersion || !qtVersion->isValid()))
+ return result;
+
+ const auto addBuild = [&](BuildConfiguration::BuildType buildType) {
+ BuildInfo info = createBuildInfo(k, projectPath, buildType);
+ if (!forSetup) {
+ info.displayName.clear(); // ask for a name
+ info.buildDirectory.clear(); // This depends on the displayName
+ }
+ result << info;
+ };
+
+ addBuild(BuildConfiguration::Debug);
+ addBuild(BuildConfiguration::Release);
+ if (qtVersion && qtVersion->qtVersion().majorVersion > 4)
+ addBuild(BuildConfiguration::Profile);
+
+ return result;
+ });
+}
+
BuildConfiguration::BuildType QmakeBuildConfiguration::buildType() const
{
if (qmakeBuildConfiguration() & BaseQtVersion::DebugBuild)
diff --git a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h
index c2e947127f..53d92c3c59 100644
--- a/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h
+++ b/src/plugins/qmakeprojectmanager/qmakebuildconfiguration.h
@@ -155,10 +155,6 @@ class QMAKEPROJECTMANAGER_EXPORT QmakeBuildConfigurationFactory : public Project
{
public:
QmakeBuildConfigurationFactory();
-
-private:
- ProjectExplorer::BuildInfo createBuildInfo(const ProjectExplorer::Kit *k, const Utils::FilePath &projectPath,
- ProjectExplorer::BuildConfiguration::BuildType type) const;
};
} // namespace QmakeProjectManager
diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectimporter.cpp b/src/plugins/qmakeprojectmanager/qmakeprojectimporter.cpp
index 2a16f1e7fd..71fd912e10 100644
--- a/src/plugins/qmakeprojectmanager/qmakeprojectimporter.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeprojectimporter.cpp
@@ -232,16 +232,12 @@ Kit *QmakeProjectImporter::createKit(void *directoryData) const
return createTemporaryKit(data->qtVersionData, data->parsedSpec, data->archConfig, data->osType);
}
-const QList<BuildInfo> QmakeProjectImporter::buildInfoListForKit(const Kit *k, void *directoryData) const
+const QList<BuildInfo> QmakeProjectImporter::buildInfoList(void *directoryData) const
{
auto *data = static_cast<DirectoryData *>(directoryData);
- auto factory = dynamic_cast<QmakeBuildConfigurationFactory *>(
- BuildConfigurationFactory::find(k, projectFilePath()));
- if (!factory)
- return {};
// create info:
- BuildInfo info(factory);
+ BuildInfo info;
if (data->buildConfig & BaseQtVersion::DebugBuild) {
info.buildType = BuildConfiguration::Debug;
info.displayName = QCoreApplication::translate("QmakeProjectManager::Internal::QmakeProjectImporter", "Debug");
@@ -249,7 +245,6 @@ const QList<BuildInfo> QmakeProjectImporter::buildInfoListForKit(const Kit *k, v
info.buildType = BuildConfiguration::Release;
info.displayName = QCoreApplication::translate("QmakeProjectManager::Internal::QmakeProjectImporter", "Release");
}
- info.kitId = k->id();
info.buildDirectory = data->buildDirectory;
QmakeExtraBuildInfo extra;
diff --git a/src/plugins/qmakeprojectmanager/qmakeprojectimporter.h b/src/plugins/qmakeprojectmanager/qmakeprojectimporter.h
index c6f364210a..8e48311f54 100644
--- a/src/plugins/qmakeprojectmanager/qmakeprojectimporter.h
+++ b/src/plugins/qmakeprojectmanager/qmakeprojectimporter.h
@@ -44,8 +44,7 @@ private:
QList<void *> examineDirectory(const Utils::FilePath &importPath) const final;
bool matchKit(void *directoryData, const ProjectExplorer::Kit *k) const final;
ProjectExplorer::Kit *createKit(void *directoryData) const final;
- const QList<ProjectExplorer::BuildInfo> buildInfoListForKit(const ProjectExplorer::Kit *k,
- void *directoryData) const final;
+ const QList<ProjectExplorer::BuildInfo> buildInfoList(void *directoryData) const final;
void deleteDirectoryData(void *directoryData) const final;
diff --git a/src/plugins/qtsupport/qtprojectimporter.cpp b/src/plugins/qtsupport/qtprojectimporter.cpp
index 1ba4de7321..8a695d2466 100644
--- a/src/plugins/qtsupport/qtprojectimporter.cpp
+++ b/src/plugins/qtsupport/qtprojectimporter.cpp
@@ -181,7 +181,7 @@ protected:
QList<void *> examineDirectory(const Utils::FilePath &importPath) const override;
bool matchKit(void *directoryData, const Kit *k) const override;
Kit *createKit(void *directoryData) const override;
- const QList<BuildInfo> buildInfoListForKit(const Kit *k, void *directoryData) const override;
+ const QList<BuildInfo> buildInfoList(void *directoryData) const override;
void deleteDirectoryData(void *directoryData) const override;
private:
@@ -241,7 +241,7 @@ Kit *TestQtProjectImporter::createKit(void *directoryData) const
});
}
-const QList<BuildInfo> TestQtProjectImporter::buildInfoListForKit(const Kit *k, void *directoryData) const
+const QList<BuildInfo> TestQtProjectImporter::buildInfoList(void *directoryData) const
{
Q_UNUSED(directoryData)
assert(m_testData.contains(directoryData));
@@ -252,7 +252,6 @@ const QList<BuildInfo> TestQtProjectImporter::buildInfoListForKit(const Kit *k,
info.displayName = "Test Build info";
info.typeName = "Debug";
info.buildDirectory = m_path;
- info.kitId = k->id();
info.buildType = BuildConfiguration::Debug;
return {info};
}