forked from qt-creator/qt-creator
CMakeBuildConfiguration: Add helpers to deal with CMakeBuildTypes
Add helpers to deal with CMakeBuildTypes and to map them to BuildConfiguration::BuildTypes. Change-Id: I03ce9e83b5d044c3d94d29c44cc0a28560b206f6 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -426,6 +426,33 @@ CMakeBuildConfigurationFactory::CMakeBuildConfigurationFactory(QObject *parent)
|
|||||||
ProjectExplorer::IBuildConfigurationFactory(parent)
|
ProjectExplorer::IBuildConfigurationFactory(parent)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
|
CMakeBuildConfigurationFactory::BuildType CMakeBuildConfigurationFactory::buildTypeFromByteArray(const QByteArray &in)
|
||||||
|
{
|
||||||
|
const QByteArray bt = in.toLower();
|
||||||
|
if (bt == "debug")
|
||||||
|
return BuildTypeDebug;
|
||||||
|
if (bt == "release")
|
||||||
|
return BuildTypeRelease;
|
||||||
|
if (bt == "relwithdebinfo")
|
||||||
|
return BuildTypeRelWithDebInfo;
|
||||||
|
if (bt == "minsizerel")
|
||||||
|
return BuildTypeMinSizeRel;
|
||||||
|
return BuildTypeNone;
|
||||||
|
}
|
||||||
|
|
||||||
|
BuildConfiguration::BuildType CMakeBuildConfigurationFactory::cmakeBuildTypeToBuildType(const CMakeBuildConfigurationFactory::BuildType &in)
|
||||||
|
{
|
||||||
|
// Cover all common CMake build types
|
||||||
|
if (in == BuildTypeRelease || in == BuildTypeMinSizeRel)
|
||||||
|
return BuildConfiguration::Release;
|
||||||
|
else if (in == BuildTypeDebug)
|
||||||
|
return BuildConfiguration::Debug;
|
||||||
|
else if (in == BuildTypeRelWithDebInfo)
|
||||||
|
return BuildConfiguration::Profile;
|
||||||
|
else
|
||||||
|
return BuildConfiguration::Unknown;
|
||||||
|
}
|
||||||
|
|
||||||
int CMakeBuildConfigurationFactory::priority(const ProjectExplorer::Target *parent) const
|
int CMakeBuildConfigurationFactory::priority(const ProjectExplorer::Target *parent) const
|
||||||
{
|
{
|
||||||
return canHandle(parent) ? 0 : -1;
|
return canHandle(parent) ? 0 : -1;
|
||||||
@@ -603,14 +630,14 @@ CMakeBuildInfo *CMakeBuildConfigurationFactory::createBuildInfo(const ProjectExp
|
|||||||
|
|
||||||
ProjectExplorer::BuildConfiguration::BuildType CMakeBuildConfiguration::buildType() const
|
ProjectExplorer::BuildConfiguration::BuildType CMakeBuildConfiguration::buildType() const
|
||||||
{
|
{
|
||||||
QString cmakeBuildType;
|
QByteArray cmakeBuildTypeName;
|
||||||
QFile cmakeCache(buildDirectory().toString() + QLatin1String("/CMakeCache.txt"));
|
QFile cmakeCache(buildDirectory().toString() + QLatin1String("/CMakeCache.txt"));
|
||||||
if (cmakeCache.open(QIODevice::ReadOnly)) {
|
if (cmakeCache.open(QIODevice::ReadOnly)) {
|
||||||
while (!cmakeCache.atEnd()) {
|
while (!cmakeCache.atEnd()) {
|
||||||
QByteArray line = cmakeCache.readLine();
|
QByteArray line = cmakeCache.readLine();
|
||||||
if (line.startsWith("CMAKE_BUILD_TYPE")) {
|
if (line.startsWith("CMAKE_BUILD_TYPE")) {
|
||||||
if (int pos = line.indexOf('='))
|
if (int pos = line.indexOf('='))
|
||||||
cmakeBuildType = QString::fromLocal8Bit(line.mid(pos + 1).trimmed());
|
cmakeBuildTypeName = line.mid(pos + 1).trimmed();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -618,17 +645,9 @@ ProjectExplorer::BuildConfiguration::BuildType CMakeBuildConfiguration::buildTyp
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Cover all common CMake build types
|
// Cover all common CMake build types
|
||||||
if (cmakeBuildType.compare(QLatin1String("Release"), Qt::CaseInsensitive) == 0
|
const CMakeBuildConfigurationFactory::BuildType cmakeBuildType
|
||||||
|| cmakeBuildType.compare(QLatin1String("MinSizeRel"), Qt::CaseInsensitive) == 0) {
|
= CMakeBuildConfigurationFactory::buildTypeFromByteArray(cmakeBuildTypeName);
|
||||||
return Release;
|
return CMakeBuildConfigurationFactory::cmakeBuildTypeToBuildType(cmakeBuildType);
|
||||||
} else if (cmakeBuildType.compare(QLatin1String("Debug"), Qt::CaseInsensitive) == 0
|
|
||||||
|| cmakeBuildType.compare(QLatin1String("DebugFull"), Qt::CaseInsensitive) == 0) {
|
|
||||||
return Debug;
|
|
||||||
} else if (cmakeBuildType.compare(QLatin1String("RelWithDebInfo"), Qt::CaseInsensitive) == 0) {
|
|
||||||
return Profile;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Unknown;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
|||||||
@@ -131,6 +131,15 @@ class CMakeBuildConfigurationFactory : public ProjectExplorer::IBuildConfigurati
|
|||||||
public:
|
public:
|
||||||
CMakeBuildConfigurationFactory(QObject *parent = 0);
|
CMakeBuildConfigurationFactory(QObject *parent = 0);
|
||||||
|
|
||||||
|
enum BuildType { BuildTypeNone = 0,
|
||||||
|
BuildTypeDebug = 1,
|
||||||
|
BuildTypeRelease = 2,
|
||||||
|
BuildTypeRelWithDebInfo = 3,
|
||||||
|
BuildTypeMinSizeRel = 4,
|
||||||
|
BuildTypeLast = 5 };
|
||||||
|
static BuildType buildTypeFromByteArray(const QByteArray &in);
|
||||||
|
static ProjectExplorer::BuildConfiguration::BuildType cmakeBuildTypeToBuildType(const BuildType &in);
|
||||||
|
|
||||||
int priority(const ProjectExplorer::Target *parent) const override;
|
int priority(const ProjectExplorer::Target *parent) const override;
|
||||||
QList<ProjectExplorer::BuildInfo *> availableBuilds(const ProjectExplorer::Target *parent) const override;
|
QList<ProjectExplorer::BuildInfo *> availableBuilds(const ProjectExplorer::Target *parent) const override;
|
||||||
int priority(const ProjectExplorer::Kit *k, const QString &projectPath) const override;
|
int priority(const ProjectExplorer::Kit *k, const QString &projectPath) const override;
|
||||||
@@ -147,13 +156,6 @@ public:
|
|||||||
private:
|
private:
|
||||||
bool canHandle(const ProjectExplorer::Target *t) const;
|
bool canHandle(const ProjectExplorer::Target *t) const;
|
||||||
|
|
||||||
enum BuildType { BuildTypeNone = 0,
|
|
||||||
BuildTypeDebug = 1,
|
|
||||||
BuildTypeRelease = 2,
|
|
||||||
BuildTypeRelWithDebInfo = 3,
|
|
||||||
BuildTypeMinSizeRel = 4,
|
|
||||||
BuildTypeLast = 5 };
|
|
||||||
|
|
||||||
CMakeBuildInfo *createBuildInfo(const ProjectExplorer::Kit *k,
|
CMakeBuildInfo *createBuildInfo(const ProjectExplorer::Kit *k,
|
||||||
const QString &sourceDir,
|
const QString &sourceDir,
|
||||||
BuildType buildType) const;
|
BuildType buildType) const;
|
||||||
|
|||||||
Reference in New Issue
Block a user