forked from qt-creator/qt-creator
BC: Move builddirectory handling into BC itself
Use setBuildDirectory() in the different BuildConfigurations instead of reimplementing that over and over again. Change-Id: Ic355fdb4624c71667ce470b3e2865c9a8722ef09 Reviewed-by: Daniel Teske <daniel.teske@digia.com> Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
This commit is contained in:
@@ -38,6 +38,7 @@
|
||||
#include "buildconfigurationinfo.h"
|
||||
|
||||
#include <utils/qtcprocess.h>
|
||||
#include <utils/qtcassert.h>
|
||||
#include <limits>
|
||||
#include <projectexplorer/buildsteplist.h>
|
||||
#include <projectexplorer/projectexplorerconstants.h>
|
||||
@@ -60,7 +61,6 @@ using namespace Utils;
|
||||
|
||||
const char QT4_BC_ID[] = "Qt4ProjectManager.Qt4BuildConfiguration";
|
||||
const char USE_SHADOW_BUILD_KEY[] = "Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild";
|
||||
const char BUILD_DIRECTORY_KEY[] = "Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory";
|
||||
const char BUILD_CONFIGURATION_KEY[] = "Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration";
|
||||
|
||||
enum { debug = 0 };
|
||||
@@ -91,7 +91,6 @@ Qt4BuildConfiguration::Qt4BuildConfiguration(Target *target, Qt4BuildConfigurati
|
||||
BuildConfiguration(target, source),
|
||||
m_shadowBuild(source->m_shadowBuild),
|
||||
m_isEnabled(false),
|
||||
m_buildDirectory(source->m_buildDirectory),
|
||||
m_qmakeBuildConfiguration(source->m_qmakeBuildConfiguration),
|
||||
m_subNodeBuild(0), // temporary value, so not copied
|
||||
m_fileNodeBuild(0)
|
||||
@@ -108,7 +107,6 @@ QVariantMap Qt4BuildConfiguration::toMap() const
|
||||
{
|
||||
QVariantMap map(BuildConfiguration::toMap());
|
||||
map.insert(QLatin1String(USE_SHADOW_BUILD_KEY), m_shadowBuild);
|
||||
map.insert(QLatin1String(BUILD_DIRECTORY_KEY), m_buildDirectory);
|
||||
map.insert(QLatin1String(BUILD_CONFIGURATION_KEY), int(m_qmakeBuildConfiguration));
|
||||
return map;
|
||||
}
|
||||
@@ -120,9 +118,7 @@ bool Qt4BuildConfiguration::fromMap(const QVariantMap &map)
|
||||
|
||||
m_shadowBuild = map.value(QLatin1String(USE_SHADOW_BUILD_KEY), true).toBool();
|
||||
m_qmakeBuildConfiguration = BaseQtVersion::QmakeBuildConfigs(map.value(QLatin1String(BUILD_CONFIGURATION_KEY)).toInt());
|
||||
m_buildDirectory = map.value(QLatin1String(BUILD_DIRECTORY_KEY), defaultShadowBuildDirectory()).toString();
|
||||
|
||||
m_lastEmmitedBuildDirectory = buildDirectory();
|
||||
m_qtVersionSupportsShadowBuilds = supportsShadowBuilds();
|
||||
|
||||
m_lastKitState = LastKitState(target()->kit());
|
||||
@@ -138,8 +134,6 @@ void Qt4BuildConfiguration::ctor()
|
||||
{
|
||||
m_buildDirectory = target()->project()->projectDirectory(); // default to in-source build!
|
||||
|
||||
connect(this, SIGNAL(environmentChanged()),
|
||||
this, SLOT(emitBuildDirectoryChanged()));
|
||||
connect(this, SIGNAL(environmentChanged()),
|
||||
this, SLOT(emitProFileEvaluateNeeded()));
|
||||
connect(target(), SIGNAL(kitChanged()),
|
||||
@@ -174,9 +168,7 @@ void Qt4BuildConfiguration::qtVersionsChanged(const QList<int> &,const QList<int
|
||||
bool Qt4BuildConfiguration::emitBuildDirectoryChanged()
|
||||
{
|
||||
// We also emit buildDirectoryChanged if the the Qt version's supportShadowBuild changed
|
||||
if (buildDirectory() != m_lastEmmitedBuildDirectory
|
||||
|| supportsShadowBuilds() != m_qtVersionSupportsShadowBuilds) {
|
||||
m_lastEmmitedBuildDirectory = buildDirectory();
|
||||
if (supportsShadowBuilds() != m_qtVersionSupportsShadowBuilds) {
|
||||
m_qtVersionSupportsShadowBuilds = supportsShadowBuilds();
|
||||
emit buildDirectoryChanged();
|
||||
return true;
|
||||
@@ -196,19 +188,6 @@ QString Qt4BuildConfiguration::defaultShadowBuildDirectory() const
|
||||
target()->kit(), displayName());
|
||||
}
|
||||
|
||||
/// returns the unexpanded build directory
|
||||
QString Qt4BuildConfiguration::rawBuildDirectory() const
|
||||
{
|
||||
return m_buildDirectory;
|
||||
}
|
||||
|
||||
/// Returns the build directory.
|
||||
QString Qt4BuildConfiguration::buildDirectory() const
|
||||
{
|
||||
QString path = QDir::cleanPath(environment().expandVariables(rawBuildDirectory()));
|
||||
return QDir::cleanPath(QDir(target()->project()->projectDirectory()).absoluteFilePath(path));
|
||||
}
|
||||
|
||||
bool Qt4BuildConfiguration::supportsShadowBuilds()
|
||||
{
|
||||
BaseQtVersion *version = QtKitInformation::qtVersion(target()->kit());
|
||||
@@ -250,19 +229,15 @@ void Qt4BuildConfiguration::setFileNodeBuild(FileNode *node)
|
||||
/// still is a in-source build
|
||||
bool Qt4BuildConfiguration::isShadowBuild() const
|
||||
{
|
||||
return buildDirectory() != target()->project()->projectDirectory();
|
||||
return buildDirectory().toString() != target()->project()->projectDirectory();
|
||||
}
|
||||
|
||||
void Qt4BuildConfiguration::setBuildDirectory(const QString &directory)
|
||||
void Qt4BuildConfiguration::setBuildDirectory(const FileName &directory)
|
||||
{
|
||||
if (!supportsShadowBuilds()) {
|
||||
m_buildDirectory = target()->project()->projectDirectory();
|
||||
} else {
|
||||
m_buildDirectory = directory;
|
||||
}
|
||||
|
||||
if (emitBuildDirectoryChanged())
|
||||
emitProFileEvaluateNeeded();
|
||||
BuildConfiguration::setBuildDirectory(directory);
|
||||
QTC_CHECK(supportsShadowBuilds()
|
||||
|| (!supportsShadowBuilds()
|
||||
&& buildDirectory().toString() == target()->project()->projectDirectory()));
|
||||
}
|
||||
|
||||
QString Qt4BuildConfiguration::makefile() const
|
||||
@@ -726,9 +701,9 @@ Qt4BuildConfiguration *Qt4BuildConfiguration::setup(Target *t, QString defaultDi
|
||||
bc->setQMakeBuildConfiguration(qmakeBuildConfiguration);
|
||||
|
||||
if (directory.isEmpty())
|
||||
bc->setBuildDirectory(t->project()->projectDirectory());
|
||||
bc->setBuildDirectory(Utils::FileName::fromString(t->project()->projectDirectory()));
|
||||
else
|
||||
bc->setBuildDirectory(directory);
|
||||
bc->setBuildDirectory(Utils::FileName::fromString(directory));
|
||||
|
||||
return bc;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user