forked from qt-creator/qt-creator
ProjectExplorer: Move some of the BuildInfo setup code to central places
Change-Id: I8893366acb187ea1a94a8ca272ded2c46cb521d1 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -80,12 +80,11 @@ AutotoolsBuildConfigurationFactory::AutotoolsBuildConfigurationFactory()
|
|||||||
setSupportedProjectType(Constants::AUTOTOOLS_PROJECT_ID);
|
setSupportedProjectType(Constants::AUTOTOOLS_PROJECT_ID);
|
||||||
setSupportedProjectMimeTypeName(Constants::MAKEFILE_MIMETYPE);
|
setSupportedProjectMimeTypeName(Constants::MAKEFILE_MIMETYPE);
|
||||||
|
|
||||||
setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) {
|
setBuildGenerator([](const Kit *, const FilePath &projectPath, bool forSetup) {
|
||||||
BuildInfo info(this);
|
BuildInfo info;
|
||||||
info.typeName = BuildConfiguration::tr("Build");
|
info.typeName = BuildConfiguration::tr("Build");
|
||||||
info.buildDirectory = forSetup
|
info.buildDirectory = forSetup
|
||||||
? FilePath::fromString(projectPath.toFileInfo().absolutePath()) : projectPath;
|
? FilePath::fromString(projectPath.toFileInfo().absolutePath()) : projectPath;
|
||||||
info.kitId = k->id();
|
|
||||||
if (forSetup) {
|
if (forSetup) {
|
||||||
//: The name of the build configuration created by default for a autotools project.
|
//: The name of the build configuration created by default for a autotools project.
|
||||||
info.displayName = BuildConfiguration::tr("Default");
|
info.displayName = BuildConfiguration::tr("Default");
|
||||||
|
|||||||
@@ -409,13 +409,13 @@ CMakeBuildConfigurationFactory::CMakeBuildConfigurationFactory()
|
|||||||
setSupportedProjectType(CMakeProjectManager::Constants::CMAKEPROJECT_ID);
|
setSupportedProjectType(CMakeProjectManager::Constants::CMAKEPROJECT_ID);
|
||||||
setSupportedProjectMimeTypeName(Constants::CMAKEPROJECTMIMETYPE);
|
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;
|
QList<BuildInfo> result;
|
||||||
|
|
||||||
FilePath path = forSetup ? Project::projectDirectory(projectPath) : projectPath;
|
FilePath path = forSetup ? Project::projectDirectory(projectPath) : projectPath;
|
||||||
|
|
||||||
for (int type = BuildTypeDebug; type != BuildTypeLast; ++type) {
|
for (int type = BuildTypeDebug; type != BuildTypeLast; ++type) {
|
||||||
BuildInfo info = createBuildInfo(k, path.toString(), BuildType(type));
|
BuildInfo info = createBuildInfo(BuildType(type));
|
||||||
if (forSetup) {
|
if (forSetup) {
|
||||||
info.buildDirectory = CMakeBuildConfiguration::shadowBuildDirectory(projectPath,
|
info.buildDirectory = CMakeBuildConfiguration::shadowBuildDirectory(projectPath,
|
||||||
k,
|
k,
|
||||||
@@ -457,12 +457,9 @@ BuildConfiguration::BuildType CMakeBuildConfigurationFactory::cmakeBuildTypeToBu
|
|||||||
return BuildConfiguration::Unknown;
|
return BuildConfiguration::Unknown;
|
||||||
}
|
}
|
||||||
|
|
||||||
BuildInfo CMakeBuildConfigurationFactory::createBuildInfo(const Kit *k,
|
BuildInfo CMakeBuildConfigurationFactory::createBuildInfo(BuildType buildType)
|
||||||
const QString &,
|
|
||||||
BuildType buildType) const
|
|
||||||
{
|
{
|
||||||
BuildInfo info(this);
|
BuildInfo info;
|
||||||
info.kitId = k->id();
|
|
||||||
|
|
||||||
switch (buildType) {
|
switch (buildType) {
|
||||||
case BuildTypeNone:
|
case BuildTypeNone:
|
||||||
|
|||||||
@@ -124,9 +124,7 @@ public:
|
|||||||
static ProjectExplorer::BuildConfiguration::BuildType cmakeBuildTypeToBuildType(const BuildType &in);
|
static ProjectExplorer::BuildConfiguration::BuildType cmakeBuildTypeToBuildType(const BuildType &in);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ProjectExplorer::BuildInfo createBuildInfo(const ProjectExplorer::Kit *k,
|
static ProjectExplorer::BuildInfo createBuildInfo(BuildType buildType);
|
||||||
const QString &sourceDir,
|
|
||||||
BuildType buildType) const;
|
|
||||||
|
|
||||||
friend class CMakeProjectImporter;
|
friend class CMakeProjectImporter;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -335,16 +335,12 @@ 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 data = static_cast<const DirectoryData *>(directoryData);
|
||||||
auto factory = dynamic_cast<CMakeBuildConfigurationFactory *>(
|
|
||||||
BuildConfigurationFactory::find(k, projectFilePath()));
|
|
||||||
if (!factory)
|
|
||||||
return {};
|
|
||||||
|
|
||||||
// create info:
|
// create info:
|
||||||
BuildInfo info = factory->createBuildInfo(k, projectDirectory().toString(),
|
BuildInfo info = CMakeBuildConfigurationFactory::createBuildInfo(
|
||||||
CMakeBuildConfigurationFactory::buildTypeFromByteArray(data->cmakeBuildType));
|
CMakeBuildConfigurationFactory::buildTypeFromByteArray(data->cmakeBuildType));
|
||||||
info.buildDirectory = data->buildDirectory;
|
info.buildDirectory = data->buildDirectory;
|
||||||
info.displayName = info.typeName;
|
info.displayName = info.typeName;
|
||||||
|
|||||||
@@ -44,8 +44,7 @@ private:
|
|||||||
QList<void *> examineDirectory(const Utils::FilePath &importPath) const final;
|
QList<void *> examineDirectory(const Utils::FilePath &importPath) const final;
|
||||||
bool matchKit(void *directoryData, const ProjectExplorer::Kit *k) const final;
|
bool matchKit(void *directoryData, const ProjectExplorer::Kit *k) const final;
|
||||||
ProjectExplorer::Kit *createKit(void *directoryData) const final;
|
ProjectExplorer::Kit *createKit(void *directoryData) const final;
|
||||||
const QList<ProjectExplorer::BuildInfo> buildInfoListForKit(const ProjectExplorer::Kit *k,
|
const QList<ProjectExplorer::BuildInfo> buildInfoList(void *directoryData) const final;
|
||||||
void *directoryData) const final;
|
|
||||||
|
|
||||||
struct CMakeToolData {
|
struct CMakeToolData {
|
||||||
bool isTemporary = false;
|
bool isTemporary = false;
|
||||||
|
|||||||
@@ -539,14 +539,13 @@ CompilationDatabaseBuildConfigurationFactory::CompilationDatabaseBuildConfigurat
|
|||||||
setSupportedProjectType(Constants::COMPILATIONDATABASEPROJECT_ID);
|
setSupportedProjectType(Constants::COMPILATIONDATABASEPROJECT_ID);
|
||||||
setSupportedProjectMimeTypeName(Constants::COMPILATIONDATABASEMIMETYPE);
|
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");
|
const QString name = BuildConfiguration::tr("Release");
|
||||||
ProjectExplorer::BuildInfo info(this);
|
ProjectExplorer::BuildInfo info;
|
||||||
info.typeName = name;
|
info.typeName = name;
|
||||||
info.displayName = name;
|
info.displayName = name;
|
||||||
info.buildType = BuildConfiguration::Release;
|
info.buildType = BuildConfiguration::Release;
|
||||||
info.buildDirectory = projectPath.parentDir();
|
info.buildDirectory = projectPath.parentDir();
|
||||||
info.kitId = kit->id();
|
|
||||||
return QList<BuildInfo>{info};
|
return QList<BuildInfo>{info};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,11 +75,10 @@ GenericBuildConfigurationFactory::GenericBuildConfigurationFactory()
|
|||||||
setSupportedProjectType(Constants::GENERICPROJECT_ID);
|
setSupportedProjectType(Constants::GENERICPROJECT_ID);
|
||||||
setSupportedProjectMimeTypeName(Constants::GENERICMIMETYPE);
|
setSupportedProjectMimeTypeName(Constants::GENERICMIMETYPE);
|
||||||
|
|
||||||
setBuildGenerator([this](const Kit *k, const FilePath &projectPath, bool forSetup) {
|
setBuildGenerator([](const Kit *, const FilePath &projectPath, bool forSetup) {
|
||||||
BuildInfo info(this);
|
BuildInfo info;
|
||||||
info.typeName = BuildConfiguration::tr("Build");
|
info.typeName = BuildConfiguration::tr("Build");
|
||||||
info.buildDirectory = forSetup ? Project::projectDirectory(projectPath) : projectPath;
|
info.buildDirectory = forSetup ? Project::projectDirectory(projectPath) : projectPath;
|
||||||
info.kitId = k->id();
|
|
||||||
|
|
||||||
if (forSetup) {
|
if (forSetup) {
|
||||||
//: The name of the build configuration created by default for a generic project.
|
//: The name of the build configuration created by default for a generic project.
|
||||||
|
|||||||
@@ -86,11 +86,10 @@ NimbleBuildConfigurationFactory::NimbleBuildConfigurationFactory()
|
|||||||
setSupportedProjectType(Constants::C_NIMBLEPROJECT_ID);
|
setSupportedProjectType(Constants::C_NIMBLEPROJECT_ID);
|
||||||
setSupportedProjectMimeTypeName(Constants::C_NIMBLE_MIMETYPE);
|
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) {
|
const auto oneBuild = [&](BuildConfiguration::BuildType buildType, const QString &typeName) {
|
||||||
BuildInfo info(this);
|
BuildInfo info;
|
||||||
info.buildType = buildType;
|
info.buildType = buildType;
|
||||||
info.kitId = k->id();
|
|
||||||
info.typeName = typeName;
|
info.typeName = typeName;
|
||||||
if (forSetup) {
|
if (forSetup) {
|
||||||
info.displayName = info.typeName;
|
info.displayName = info.typeName;
|
||||||
|
|||||||
@@ -135,11 +135,10 @@ NimBuildConfigurationFactory::NimBuildConfigurationFactory()
|
|||||||
setSupportedProjectType(Constants::C_NIMPROJECT_ID);
|
setSupportedProjectType(Constants::C_NIMPROJECT_ID);
|
||||||
setSupportedProjectMimeTypeName(Constants::C_NIM_PROJECT_MIMETYPE);
|
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) {
|
const auto oneBuild = [&](BuildConfiguration::BuildType buildType, const QString &typeName) {
|
||||||
BuildInfo info(this);
|
BuildInfo info;
|
||||||
info.buildType = buildType;
|
info.buildType = buildType;
|
||||||
info.kitId = k->id();
|
|
||||||
info.typeName = typeName;
|
info.typeName = typeName;
|
||||||
if (forSetup) {
|
if (forSetup) {
|
||||||
info.displayName = info.typeName;
|
info.displayName = info.typeName;
|
||||||
|
|||||||
@@ -509,14 +509,24 @@ const Tasks BuildConfigurationFactory::reportIssues(ProjectExplorer::Kit *kit, c
|
|||||||
const QList<BuildInfo> BuildConfigurationFactory::allAvailableBuilds(const Target *parent) const
|
const QList<BuildInfo> BuildConfigurationFactory::allAvailableBuilds(const Target *parent) const
|
||||||
{
|
{
|
||||||
QTC_ASSERT(m_buildGenerator, return {});
|
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>
|
const QList<BuildInfo>
|
||||||
BuildConfigurationFactory::allAvailableSetups(const Kit *k, const FilePath &projectPath) const
|
BuildConfigurationFactory::allAvailableSetups(const Kit *k, const FilePath &projectPath) const
|
||||||
{
|
{
|
||||||
QTC_ASSERT(m_buildGenerator, return {});
|
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
|
bool BuildConfigurationFactory::supportsTargetDeviceType(Core::Id id) const
|
||||||
|
|||||||
@@ -28,7 +28,6 @@
|
|||||||
#include "projectexplorer_export.h"
|
#include "projectexplorer_export.h"
|
||||||
|
|
||||||
#include "buildconfiguration.h"
|
#include "buildconfiguration.h"
|
||||||
#include "task.h"
|
|
||||||
|
|
||||||
#include <coreplugin/id.h>
|
#include <coreplugin/id.h>
|
||||||
#include <utils/fileutils.h>
|
#include <utils/fileutils.h>
|
||||||
@@ -40,9 +39,7 @@ class BuildConfigurationFactory;
|
|||||||
class PROJECTEXPLORER_EXPORT BuildInfo final
|
class PROJECTEXPLORER_EXPORT BuildInfo final
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BuildInfo(const BuildConfigurationFactory *f = nullptr) : m_factory(f) { }
|
BuildInfo() = default;
|
||||||
|
|
||||||
const BuildConfigurationFactory *factory() const { return m_factory; }
|
|
||||||
|
|
||||||
QString displayName;
|
QString displayName;
|
||||||
QString typeName;
|
QString typeName;
|
||||||
@@ -51,11 +48,11 @@ public:
|
|||||||
BuildConfiguration::BuildType buildType = BuildConfiguration::Unknown;
|
BuildConfiguration::BuildType buildType = BuildConfiguration::Unknown;
|
||||||
|
|
||||||
QVariant extraInfo;
|
QVariant extraInfo;
|
||||||
const BuildConfigurationFactory *m_factory = nullptr;
|
const BuildConfigurationFactory *factory = nullptr;
|
||||||
|
|
||||||
bool operator==(const BuildInfo &o) const
|
bool operator==(const BuildInfo &o) const
|
||||||
{
|
{
|
||||||
return m_factory == o.m_factory
|
return factory == o.factory
|
||||||
&& displayName == o.displayName && typeName == o.typeName
|
&& displayName == o.displayName && typeName == o.typeName
|
||||||
&& buildDirectory == o.buildDirectory && kitId == o.kitId
|
&& buildDirectory == o.buildDirectory && kitId == o.kitId
|
||||||
&& buildType == o.buildType;
|
&& buildType == o.buildType;
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ void BuildSettingsWidget::createConfiguration(const BuildInfo &info_)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
BuildConfiguration *bc = info.factory()->create(m_target, info);
|
BuildConfiguration *bc = info.factory->create(m_target, info);
|
||||||
if (!bc)
|
if (!bc)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -932,10 +932,10 @@ void Project::setup(const QList<BuildInfo> &infoList)
|
|||||||
toRegister.emplace_back(std::move(newTarget));
|
toRegister.emplace_back(std::move(newTarget));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!info.factory())
|
if (!info.factory)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (BuildConfiguration *bc = info.factory()->create(t, info))
|
if (BuildConfiguration *bc = info.factory->create(t, info))
|
||||||
t->addBuildConfiguration(bc);
|
t->addBuildConfiguration(bc);
|
||||||
}
|
}
|
||||||
for (std::unique_ptr<Target> &t : toRegister) {
|
for (std::unique_ptr<Target> &t : toRegister) {
|
||||||
|
|||||||
@@ -132,13 +132,16 @@ const QList<BuildInfo> ProjectImporter::import(const Utils::FilePath &importPath
|
|||||||
|
|
||||||
foreach (Kit *k, kitList) {
|
foreach (Kit *k, kitList) {
|
||||||
qCDebug(log) << "Creating buildinfos for kit" << k->displayName();
|
qCDebug(log) << "Creating buildinfos for kit" << k->displayName();
|
||||||
const QList<BuildInfo> infoList = buildInfoListForKit(k, data);
|
const QList<BuildInfo> infoList = buildInfoList(data);
|
||||||
if (infoList.isEmpty()) {
|
if (infoList.isEmpty()) {
|
||||||
qCDebug(log) << "No build infos for kit" << k->displayName();
|
qCDebug(log) << "No build infos for kit" << k->displayName();
|
||||||
continue;
|
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))
|
if (!result.contains(i))
|
||||||
result += i;
|
result += i;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ protected:
|
|||||||
// will get one of the results from examineDirectory
|
// will get one of the results from examineDirectory
|
||||||
virtual Kit *createKit(void *directoryData) const = 0;
|
virtual Kit *createKit(void *directoryData) const = 0;
|
||||||
// will get one of the results from examineDirectory
|
// 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;
|
virtual void deleteDirectoryData(void *directoryData) const = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -583,7 +583,7 @@ public:
|
|||||||
target = project->addTargetForKit(KitManager::kit(info.kitId));
|
target = project->addTargetForKit(KitManager::kit(info.kitId));
|
||||||
if (target) {
|
if (target) {
|
||||||
projectImporter->makePersistent(target->kit());
|
projectImporter->makePersistent(target->kit());
|
||||||
BuildConfiguration *bc = info.factory()->create(target, info);
|
BuildConfiguration *bc = info.factory->create(target, info);
|
||||||
QTC_ASSERT(bc, continue);
|
QTC_ASSERT(bc, continue);
|
||||||
target->addBuildConfiguration(bc);
|
target->addBuildConfiguration(bc);
|
||||||
|
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ void TargetSetupWidget::addBuildInfo(const BuildInfo &info, bool isImport)
|
|||||||
store.isEnabled = true;
|
store.isEnabled = true;
|
||||||
++m_selected;
|
++m_selected;
|
||||||
|
|
||||||
if (info.factory()) {
|
if (info.factory) {
|
||||||
store.checkbox = new QCheckBox;
|
store.checkbox = new QCheckBox;
|
||||||
store.checkbox->setText(info.displayName);
|
store.checkbox->setText(info.displayName);
|
||||||
store.checkbox->setChecked(store.isEnabled);
|
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))
|
if (auto factory = BuildConfigurationFactory::find(k, projectPath))
|
||||||
return factory->allAvailableSetups(k, projectPath);
|
return factory->allAvailableSetups(k, projectPath);
|
||||||
|
|
||||||
BuildInfo info(nullptr);
|
BuildInfo info;
|
||||||
info.kitId = k->id();
|
info.kitId = k->id();
|
||||||
return {info};
|
return {info};
|
||||||
}
|
}
|
||||||
@@ -294,7 +294,7 @@ void TargetSetupWidget::clear()
|
|||||||
void TargetSetupWidget::updateDefaultBuildDirectories()
|
void TargetSetupWidget::updateDefaultBuildDirectories()
|
||||||
{
|
{
|
||||||
for (const BuildInfo &buildInfo : buildInfoList(m_kit, m_projectPath)) {
|
for (const BuildInfo &buildInfo : buildInfoList(m_kit, m_projectPath)) {
|
||||||
if (!buildInfo.factory())
|
if (!buildInfo.factory)
|
||||||
continue;
|
continue;
|
||||||
bool found = false;
|
bool found = false;
|
||||||
for (BuildInfoStore &buildInfoStore : m_infoStore) {
|
for (BuildInfoStore &buildInfoStore : m_infoStore) {
|
||||||
@@ -364,13 +364,13 @@ void TargetSetupWidget::reportIssues(int index)
|
|||||||
|
|
||||||
QPair<Task::TaskType, QString> TargetSetupWidget::findIssues(const BuildInfo &info)
|
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());
|
return qMakePair(Task::Unknown, QString());
|
||||||
|
|
||||||
QString buildDir = info.buildDirectory.toString();
|
QString buildDir = info.buildDirectory.toString();
|
||||||
Tasks issues;
|
Tasks issues;
|
||||||
if (info.factory())
|
if (info.factory)
|
||||||
issues = info.factory()->reportIssues(m_kit, m_projectPath.toString(), buildDir);
|
issues = info.factory->reportIssues(m_kit, m_projectPath.toString(), buildDir);
|
||||||
|
|
||||||
QString text;
|
QString text;
|
||||||
Task::TaskType highestType = Task::Unknown;
|
Task::TaskType highestType = Task::Unknown;
|
||||||
|
|||||||
@@ -428,7 +428,7 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory()
|
|||||||
|
|
||||||
if (forSetup) {
|
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.
|
//: The name of the debug build configuration created by default for a qbs project.
|
||||||
info.displayName = BuildConfiguration::tr("Debug");
|
info.displayName = BuildConfiguration::tr("Debug");
|
||||||
//: Non-ASCII characters in directory suffix may cause build issues.
|
//: Non-ASCII characters in directory suffix may cause build issues.
|
||||||
@@ -436,7 +436,7 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory()
|
|||||||
info.buildDirectory = defaultBuildDirectory(projectPath, k, dbg, info.buildType);
|
info.buildDirectory = defaultBuildDirectory(projectPath, k, dbg, info.buildType);
|
||||||
result << info;
|
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.
|
//: The name of the release build configuration created by default for a qbs project.
|
||||||
info.displayName = BuildConfiguration::tr("Release");
|
info.displayName = BuildConfiguration::tr("Release");
|
||||||
//: Non-ASCII characters in directory suffix may cause build issues.
|
//: Non-ASCII characters in directory suffix may cause build issues.
|
||||||
@@ -446,7 +446,7 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory()
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
result << createBuildInfo(k, BuildConfiguration::Debug);
|
result << createBuildInfo(BuildConfiguration::Debug);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -454,11 +454,9 @@ QbsBuildConfigurationFactory::QbsBuildConfigurationFactory()
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
BuildInfo QbsBuildConfigurationFactory::createBuildInfo(const Kit *k,
|
BuildInfo QbsBuildConfigurationFactory::createBuildInfo(BuildConfiguration::BuildType type) const
|
||||||
BuildConfiguration::BuildType type) const
|
|
||||||
{
|
{
|
||||||
BuildInfo info(this);
|
BuildInfo info;
|
||||||
info.kitId = k->id();
|
|
||||||
info.buildType = type;
|
info.buildType = type;
|
||||||
info.typeName = BuildConfiguration::tr("Build");
|
info.typeName = BuildConfiguration::tr("Build");
|
||||||
QVariantMap config;
|
QVariantMap config;
|
||||||
|
|||||||
@@ -101,8 +101,7 @@ public:
|
|||||||
QbsBuildConfigurationFactory();
|
QbsBuildConfigurationFactory();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ProjectExplorer::BuildInfo createBuildInfo(const ProjectExplorer::Kit *k,
|
ProjectExplorer::BuildInfo createBuildInfo(ProjectExplorer::BuildConfiguration::BuildType type) const;
|
||||||
ProjectExplorer::BuildConfiguration::BuildType type) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -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);
|
const auto * const bgData = static_cast<BuildGraphData *>(directoryData);
|
||||||
BuildInfo info(factory);
|
BuildInfo info;
|
||||||
info.displayName = bgData->bgFilePath.toFileInfo().completeBaseName();
|
info.displayName = bgData->bgFilePath.toFileInfo().completeBaseName();
|
||||||
info.buildType = bgData->buildVariant == "debug"
|
info.buildType = bgData->buildVariant == "debug"
|
||||||
? BuildConfiguration::Debug : BuildConfiguration::Release;
|
? BuildConfiguration::Debug : BuildConfiguration::Release;
|
||||||
info.kitId = k->id();
|
|
||||||
info.buildDirectory = bgData->bgFilePath.parentDir().parentDir();
|
info.buildDirectory = bgData->bgFilePath.parentDir().parentDir();
|
||||||
QVariantMap config = bgData->overriddenProperties;
|
QVariantMap config = bgData->overriddenProperties;
|
||||||
config.insert("configName", info.displayName);
|
config.insert("configName", info.displayName);
|
||||||
info.extraInfo = config;
|
info.extraInfo = config;
|
||||||
|
qCDebug(qbsPmLog) << "creating build info for " << info.displayName << ' ' << bgData->buildVariant;
|
||||||
return {info};
|
return {info};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,8 +42,7 @@ private:
|
|||||||
QList<void *> examineDirectory(const Utils::FilePath &importPath) const override;
|
QList<void *> examineDirectory(const Utils::FilePath &importPath) const override;
|
||||||
bool matchKit(void *directoryData, const ProjectExplorer::Kit *k) const override;
|
bool matchKit(void *directoryData, const ProjectExplorer::Kit *k) const override;
|
||||||
ProjectExplorer::Kit *createKit(void *directoryData) const override;
|
ProjectExplorer::Kit *createKit(void *directoryData) const override;
|
||||||
const QList<ProjectExplorer::BuildInfo> buildInfoListForKit(const ProjectExplorer::Kit *k,
|
const QList<ProjectExplorer::BuildInfo> buildInfoList(void *directoryData) const override;
|
||||||
void *directoryData) const override;
|
|
||||||
void deleteDirectoryData(void *directoryData) const override;
|
void deleteDirectoryData(void *directoryData) const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -692,60 +692,13 @@ QString QmakeBuildConfiguration::extractSpecFromArguments(QString *args,
|
|||||||
\class QmakeBuildConfigurationFactory
|
\class QmakeBuildConfigurationFactory
|
||||||
*/
|
*/
|
||||||
|
|
||||||
QmakeBuildConfigurationFactory::QmakeBuildConfigurationFactory()
|
static BuildInfo createBuildInfo(const Kit *k, const FilePath &projectPath,
|
||||||
{
|
BuildConfiguration::BuildType type)
|
||||||
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
|
|
||||||
{
|
{
|
||||||
const BuildPropertiesSettings &settings = ProjectExplorerPlugin::buildPropertiesSettings();
|
const BuildPropertiesSettings &settings = ProjectExplorerPlugin::buildPropertiesSettings();
|
||||||
BaseQtVersion *version = QtKitAspect::qtVersion(k);
|
BaseQtVersion *version = QtKitAspect::qtVersion(k);
|
||||||
QmakeExtraBuildInfo extraInfo;
|
QmakeExtraBuildInfo extraInfo;
|
||||||
BuildInfo info(this);
|
BuildInfo info;
|
||||||
QString suffix;
|
QString suffix;
|
||||||
|
|
||||||
if (type == BuildConfiguration::Release) {
|
if (type == BuildConfiguration::Release) {
|
||||||
@@ -783,7 +736,6 @@ BuildInfo QmakeBuildConfigurationFactory::createBuildInfo(const Kit *k,
|
|||||||
}
|
}
|
||||||
info.typeName = info.displayName;
|
info.typeName = info.displayName;
|
||||||
// Leave info.buildDirectory unset;
|
// Leave info.buildDirectory unset;
|
||||||
info.kitId = k->id();
|
|
||||||
|
|
||||||
// check if this project is in the source directory:
|
// check if this project is in the source directory:
|
||||||
if (version && version->isInSourceDirectory(projectPath)) {
|
if (version && version->isInSourceDirectory(projectPath)) {
|
||||||
@@ -804,6 +756,52 @@ BuildInfo QmakeBuildConfigurationFactory::createBuildInfo(const Kit *k,
|
|||||||
return info;
|
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
|
BuildConfiguration::BuildType QmakeBuildConfiguration::buildType() const
|
||||||
{
|
{
|
||||||
if (qmakeBuildConfiguration() & BaseQtVersion::DebugBuild)
|
if (qmakeBuildConfiguration() & BaseQtVersion::DebugBuild)
|
||||||
|
|||||||
@@ -155,10 +155,6 @@ class QMAKEPROJECTMANAGER_EXPORT QmakeBuildConfigurationFactory : public Project
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QmakeBuildConfigurationFactory();
|
QmakeBuildConfigurationFactory();
|
||||||
|
|
||||||
private:
|
|
||||||
ProjectExplorer::BuildInfo createBuildInfo(const ProjectExplorer::Kit *k, const Utils::FilePath &projectPath,
|
|
||||||
ProjectExplorer::BuildConfiguration::BuildType type) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QmakeProjectManager
|
} // namespace QmakeProjectManager
|
||||||
|
|||||||
@@ -232,16 +232,12 @@ Kit *QmakeProjectImporter::createKit(void *directoryData) const
|
|||||||
return createTemporaryKit(data->qtVersionData, data->parsedSpec, data->archConfig, data->osType);
|
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 *data = static_cast<DirectoryData *>(directoryData);
|
||||||
auto factory = dynamic_cast<QmakeBuildConfigurationFactory *>(
|
|
||||||
BuildConfigurationFactory::find(k, projectFilePath()));
|
|
||||||
if (!factory)
|
|
||||||
return {};
|
|
||||||
|
|
||||||
// create info:
|
// create info:
|
||||||
BuildInfo info(factory);
|
BuildInfo info;
|
||||||
if (data->buildConfig & BaseQtVersion::DebugBuild) {
|
if (data->buildConfig & BaseQtVersion::DebugBuild) {
|
||||||
info.buildType = BuildConfiguration::Debug;
|
info.buildType = BuildConfiguration::Debug;
|
||||||
info.displayName = QCoreApplication::translate("QmakeProjectManager::Internal::QmakeProjectImporter", "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.buildType = BuildConfiguration::Release;
|
||||||
info.displayName = QCoreApplication::translate("QmakeProjectManager::Internal::QmakeProjectImporter", "Release");
|
info.displayName = QCoreApplication::translate("QmakeProjectManager::Internal::QmakeProjectImporter", "Release");
|
||||||
}
|
}
|
||||||
info.kitId = k->id();
|
|
||||||
info.buildDirectory = data->buildDirectory;
|
info.buildDirectory = data->buildDirectory;
|
||||||
|
|
||||||
QmakeExtraBuildInfo extra;
|
QmakeExtraBuildInfo extra;
|
||||||
|
|||||||
@@ -44,8 +44,7 @@ private:
|
|||||||
QList<void *> examineDirectory(const Utils::FilePath &importPath) const final;
|
QList<void *> examineDirectory(const Utils::FilePath &importPath) const final;
|
||||||
bool matchKit(void *directoryData, const ProjectExplorer::Kit *k) const final;
|
bool matchKit(void *directoryData, const ProjectExplorer::Kit *k) const final;
|
||||||
ProjectExplorer::Kit *createKit(void *directoryData) const final;
|
ProjectExplorer::Kit *createKit(void *directoryData) const final;
|
||||||
const QList<ProjectExplorer::BuildInfo> buildInfoListForKit(const ProjectExplorer::Kit *k,
|
const QList<ProjectExplorer::BuildInfo> buildInfoList(void *directoryData) const final;
|
||||||
void *directoryData) const final;
|
|
||||||
|
|
||||||
void deleteDirectoryData(void *directoryData) const final;
|
void deleteDirectoryData(void *directoryData) const final;
|
||||||
|
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ protected:
|
|||||||
QList<void *> examineDirectory(const Utils::FilePath &importPath) const override;
|
QList<void *> examineDirectory(const Utils::FilePath &importPath) const override;
|
||||||
bool matchKit(void *directoryData, const Kit *k) const override;
|
bool matchKit(void *directoryData, const Kit *k) const override;
|
||||||
Kit *createKit(void *directoryData) 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;
|
void deleteDirectoryData(void *directoryData) const override;
|
||||||
|
|
||||||
private:
|
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)
|
Q_UNUSED(directoryData)
|
||||||
assert(m_testData.contains(directoryData));
|
assert(m_testData.contains(directoryData));
|
||||||
@@ -252,7 +252,6 @@ const QList<BuildInfo> TestQtProjectImporter::buildInfoListForKit(const Kit *k,
|
|||||||
info.displayName = "Test Build info";
|
info.displayName = "Test Build info";
|
||||||
info.typeName = "Debug";
|
info.typeName = "Debug";
|
||||||
info.buildDirectory = m_path;
|
info.buildDirectory = m_path;
|
||||||
info.kitId = k->id();
|
|
||||||
info.buildType = BuildConfiguration::Debug;
|
info.buildType = BuildConfiguration::Debug;
|
||||||
return {info};
|
return {info};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user