From a7bb77288d28160daabbc00179e77736886ce8d2 Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@digia.com> Date: Fri, 16 Aug 2013 17:45:16 +0200 Subject: [PATCH] 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> --- .../autotoolsprojectmanager/autogenstep.cpp | 11 ++-- .../autoreconfstep.cpp | 7 +-- .../autotoolsbuildconfiguration.cpp | 41 ++------------ .../autotoolsbuildconfiguration.h | 9 +--- .../autotoolsbuildsettingswidget.cpp | 13 ++++- .../autotoolsbuildsettingswidget.h | 1 + .../autotoolsprojectconstants.h | 1 - .../autotoolsprojectmanager/configurestep.cpp | 9 ++-- .../autotoolsprojectmanager/makestep.cpp | 4 +- .../cmakebuildconfiguration.cpp | 28 ++-------- .../cmakebuildconfiguration.h | 7 ++- .../cmakeopenprojectwizard.h | 2 +- .../cmakeprojectmanager/cmakeproject.cpp | 18 +++---- src/plugins/cmakeprojectmanager/makestep.cpp | 4 +- src/plugins/debugger/debuggerrunner.cpp | 2 +- .../genericbuildconfiguration.cpp | 54 ++++--------------- .../genericbuildconfiguration.h | 11 ++-- .../genericprojectmanager/genericmakestep.cpp | 4 +- .../madde/maemoinstalltosysrootstep.cpp | 2 +- .../projectexplorer/buildconfiguration.cpp | 36 +++++++++++-- .../projectexplorer/buildconfiguration.h | 12 +++-- .../projectexplorer/projectexplorer.cpp | 2 +- .../projectexplorer/settingsaccessor.cpp | 38 +++++++++++++ .../qbsbuildconfiguration.cpp | 27 +--------- .../qbsprojectmanager/qbsbuildconfiguration.h | 5 -- .../qbsbuildconfigurationwidget.cpp | 15 ++++-- .../qbsbuildconfigurationwidget.h | 1 + src/plugins/qbsprojectmanager/qbsproject.cpp | 2 +- .../qnx/blackberryabstractdeploystep.cpp | 2 +- .../qnx/blackberrycreatepackagestep.cpp | 2 +- .../qnx/blackberrydeployinformation.cpp | 8 +-- .../qnx/blackberryruncontrolfactory.cpp | 2 +- src/plugins/qnx/qnxruncontrolfactory.cpp | 2 +- .../librarydetailscontroller.cpp | 2 +- src/plugins/qt4projectmanager/makestep.cpp | 4 +- src/plugins/qt4projectmanager/qmakestep.cpp | 2 +- .../qt4buildconfiguration.cpp | 45 ++++------------ .../qt4projectmanager/qt4buildconfiguration.h | 9 ++-- src/plugins/qt4projectmanager/qt4nodes.cpp | 2 +- .../qt4projectconfigwidget.cpp | 28 +++++----- .../remotelinux/abstractpackagingstep.cpp | 2 +- .../remotelinux/remotelinuxdebugsupport.cpp | 2 +- src/plugins/valgrind/memchecktool.cpp | 2 +- 43 files changed, 212 insertions(+), 268 deletions(-) diff --git a/src/plugins/autotoolsprojectmanager/autogenstep.cpp b/src/plugins/autotoolsprojectmanager/autogenstep.cpp index f8afd63a02c..06071a228e4 100644 --- a/src/plugins/autotoolsprojectmanager/autogenstep.cpp +++ b/src/plugins/autotoolsprojectmanager/autogenstep.cpp @@ -158,7 +158,7 @@ bool AutogenStep::init() ProcessParameters *pp = processParameters(); pp->setMacroExpander(bc->macroExpander()); pp->setEnvironment(bc->environment()); - pp->setWorkingDirectory(bc->buildDirectory()); + pp->setWorkingDirectory(bc->buildDirectory().toString()); pp->setCommand(QLatin1String("autogen.sh")); pp->setArguments(additionalArguments()); pp->resolveAll(); @@ -171,9 +171,10 @@ void AutogenStep::run(QFutureInterface<bool> &interface) BuildConfiguration *bc = buildConfiguration(); // Check whether we need to run autogen.sh - const QFileInfo configureInfo(bc->buildDirectory() + QLatin1String("/configure")); - const QFileInfo configureAcInfo(bc->buildDirectory() + QLatin1String("/configure.ac")); - const QFileInfo makefileAmInfo(bc->buildDirectory() + QLatin1String("/Makefile.am")); + const QString buildDir = bc->buildDirectory().toString(); + const QFileInfo configureInfo(buildDir + QLatin1String("/configure")); + const QFileInfo configureAcInfo(buildDir + QLatin1String("/configure.ac")); + const QFileInfo makefileAmInfo(buildDir + QLatin1String("/Makefile.am")); if (!configureInfo.exists() || configureInfo.lastModified() < configureAcInfo.lastModified() @@ -275,7 +276,7 @@ void AutogenStepConfigWidget::updateDetails() ProcessParameters param; param.setMacroExpander(bc->macroExpander()); param.setEnvironment(bc->environment()); - param.setWorkingDirectory(bc->buildDirectory()); + param.setWorkingDirectory(bc->buildDirectory().toString()); param.setCommand(QLatin1String("autogen.sh")); param.setArguments(m_autogenStep->additionalArguments()); m_summaryText = param.summary(displayName()); diff --git a/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp b/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp index adcb7b0096f..1b8d7b8990a 100644 --- a/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp +++ b/src/plugins/autotoolsprojectmanager/autoreconfstep.cpp @@ -157,7 +157,7 @@ bool AutoreconfStep::init() ProcessParameters *pp = processParameters(); pp->setMacroExpander(bc->macroExpander()); pp->setEnvironment(bc->environment()); - pp->setWorkingDirectory(bc->buildDirectory()); + pp->setWorkingDirectory(bc->buildDirectory().toString()); pp->setCommand(QLatin1String("autoreconf")); pp->setArguments(additionalArguments()); pp->resolveAll(); @@ -170,7 +170,8 @@ void AutoreconfStep::run(QFutureInterface<bool> &interface) BuildConfiguration *bc = buildConfiguration(); // Check whether we need to run autoreconf - const QFileInfo configureInfo(bc->buildDirectory() + QLatin1String("/configure")); + const QString buildDir = bc->buildDirectory().toString(); + const QFileInfo configureInfo(buildDir + QLatin1String("/configure")); if (!configureInfo.exists()) m_runAutoreconf = true; @@ -269,7 +270,7 @@ void AutoreconfStepConfigWidget::updateDetails() ProcessParameters param; param.setMacroExpander(bc->macroExpander()); param.setEnvironment(bc->environment()); - param.setWorkingDirectory(bc->buildDirectory()); + param.setWorkingDirectory(bc->buildDirectory().toString()); param.setCommand(QLatin1String("autoreconf")); param.setArguments(m_autoreconfStep->additionalArguments()); m_summaryText = param.summary(displayName()); diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp index bf07d5c593e..26bdc479b60 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp @@ -59,11 +59,7 @@ using namespace ProjectExplorer::Constants; ////////////////////////////////////// AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(ProjectExplorer::Target *parent) : BuildConfiguration(parent, Core::Id(AUTOTOOLS_BC_ID)) -{ - AutotoolsProject *project = qobject_cast<AutotoolsProject *>(parent->project()); - if (project) - m_buildDirectory = project->defaultBuildDirectory(); -} +{ } NamedWidget *AutotoolsBuildConfiguration::createConfigWidget() { @@ -72,46 +68,15 @@ NamedWidget *AutotoolsBuildConfiguration::createConfigWidget() AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(ProjectExplorer::Target *parent, const Core::Id id) : BuildConfiguration(parent, id) -{ -} +{ } AutotoolsBuildConfiguration::AutotoolsBuildConfiguration(ProjectExplorer::Target *parent, AutotoolsBuildConfiguration *source) - : BuildConfiguration(parent, source), - m_buildDirectory(source->m_buildDirectory) + : BuildConfiguration(parent, source) { cloneSteps(source); } -QVariantMap AutotoolsBuildConfiguration::toMap() const -{ - QVariantMap map = BuildConfiguration::toMap(); - map.insert(QLatin1String(BUILD_DIRECTORY_KEY), m_buildDirectory); - return map; -} - -bool AutotoolsBuildConfiguration::fromMap(const QVariantMap &map) -{ - if (!BuildConfiguration::fromMap(map)) - return false; - - m_buildDirectory = map.value(QLatin1String(BUILD_DIRECTORY_KEY)).toString(); - return true; -} - -QString AutotoolsBuildConfiguration::buildDirectory() const -{ - return m_buildDirectory; -} - -void AutotoolsBuildConfiguration::setBuildDirectory(const QString &buildDirectory) -{ - if (m_buildDirectory == buildDirectory) - return; - m_buildDirectory = buildDirectory; - emit buildDirectoryChanged(); -} - ////////////////////////////////////// // AutotoolsBuildConfiguration class ////////////////////////////////////// diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h index 639efc305d9..7fb3a04792b 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h +++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.h @@ -39,6 +39,7 @@ namespace Internal { class AutotoolsTarget; class AutotoolsBuildConfigurationFactory; +class AutotoolsBuildSettingsWidget; class AutotoolsBuildConfiguration : public ProjectExplorer::BuildConfiguration { @@ -50,19 +51,13 @@ public: ProjectExplorer::NamedWidget *createConfigWidget(); - QString buildDirectory() const; - void setBuildDirectory(const QString &buildDirectory); - QVariantMap toMap() const; BuildType buildType() const; protected: AutotoolsBuildConfiguration(ProjectExplorer::Target *parent, const Core::Id id); AutotoolsBuildConfiguration(ProjectExplorer::Target *parent, AutotoolsBuildConfiguration *source); - bool fromMap(const QVariantMap &map); - -private: - QString m_buildDirectory; + friend class AutotoolsBuildSettingsWidget; }; class AutotoolsBuildConfigurationFactory : public ProjectExplorer::IBuildConfigurationFactory diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.cpp index e55079283b6..627510bb467 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.cpp @@ -59,15 +59,24 @@ AutotoolsBuildSettingsWidget::AutotoolsBuildSettingsWidget(AutotoolsBuildConfigu m_pathChooser = new Utils::PathChooser(this); m_pathChooser->setEnabled(true); m_pathChooser->setExpectedKind(Utils::PathChooser::Directory); + m_pathChooser->setBaseDirectory(bc->target()->project()->projectDirectory()); + m_pathChooser->setEnvironment(bc->environment()); fl->addRow(tr("Build directory:"), m_pathChooser); connect(m_pathChooser, SIGNAL(changed(QString)), this, SLOT(buildDirectoryChanged())); m_pathChooser->setBaseDirectory(bc->target()->project()->projectDirectory()); - m_pathChooser->setPath(m_buildConfiguration->buildDirectory()); + m_pathChooser->setPath(m_buildConfiguration->rawBuildDirectory().toString()); setDisplayName(tr("Autotools Manager")); + + connect(bc, SIGNAL(environmentChanged()), this, SLOT(environmentHasChanged())); } void AutotoolsBuildSettingsWidget::buildDirectoryChanged() { - m_buildConfiguration->setBuildDirectory(m_pathChooser->rawPath()); + m_buildConfiguration->setBuildDirectory(Utils::FileName::fromString(m_pathChooser->rawPath())); +} + +void AutotoolsBuildSettingsWidget::environmentHasChanged() +{ + m_pathChooser->setEnvironment(m_buildConfiguration->environment()); } diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.h b/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.h index 459fb2e2342..183c2e4300c 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.h +++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildsettingswidget.h @@ -61,6 +61,7 @@ public: private slots: void buildDirectoryChanged(); + void environmentHasChanged(); private: Utils::PathChooser *m_pathChooser; diff --git a/src/plugins/autotoolsprojectmanager/autotoolsprojectconstants.h b/src/plugins/autotoolsprojectmanager/autotoolsprojectconstants.h index 382737e709d..44a0c21f6d8 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsprojectconstants.h +++ b/src/plugins/autotoolsprojectmanager/autotoolsprojectconstants.h @@ -41,7 +41,6 @@ namespace Constants { //BuildConfiguration const char AUTOTOOLS_BC_ID[] = "AutotoolsProjectManager.AutotoolsBuildConfiguration"; - const char BUILD_DIRECTORY_KEY[] = "AutotoolsProjectManager.AutotoolsBuildConfiguration.BuildDirectory"; //Project const char AUTOTOOLS_PROJECT_ID[] = "AutotoolsProjectManager.AutotoolsProject"; diff --git a/src/plugins/autotoolsprojectmanager/configurestep.cpp b/src/plugins/autotoolsprojectmanager/configurestep.cpp index 687fcc924e6..8f0b13d818d 100644 --- a/src/plugins/autotoolsprojectmanager/configurestep.cpp +++ b/src/plugins/autotoolsprojectmanager/configurestep.cpp @@ -158,7 +158,7 @@ bool ConfigureStep::init() ProcessParameters *pp = processParameters(); pp->setMacroExpander(bc->macroExpander()); pp->setEnvironment(bc->environment()); - pp->setWorkingDirectory(bc->buildDirectory()); + pp->setWorkingDirectory(bc->buildDirectory().toString()); pp->setCommand(QLatin1String("configure")); pp->setArguments(additionalArguments()); pp->resolveAll(); @@ -171,8 +171,9 @@ void ConfigureStep::run(QFutureInterface<bool>& interface) BuildConfiguration *bc = buildConfiguration(); //Check whether we need to run configure - const QFileInfo configureInfo(bc->buildDirectory() + QLatin1String("/configure")); - const QFileInfo configStatusInfo(bc->buildDirectory() + QLatin1String("/config.status")); + QString buildDir = bc->buildDirectory().toString(); + const QFileInfo configureInfo(buildDir +QLatin1String("/configure")); + const QFileInfo configStatusInfo(buildDir + QLatin1String("/config.status")); if (!configStatusInfo.exists() || configStatusInfo.lastModified() < configureInfo.lastModified()) { @@ -273,7 +274,7 @@ void ConfigureStepConfigWidget::updateDetails() ProcessParameters param; param.setMacroExpander(bc->macroExpander()); param.setEnvironment(bc->environment()); - param.setWorkingDirectory(bc->buildDirectory()); + param.setWorkingDirectory(bc->buildDirectory().toString()); param.setCommand(QLatin1String("configure")); param.setArguments(m_configureStep->additionalArguments()); m_summaryText = param.summary(displayName()); diff --git a/src/plugins/autotoolsprojectmanager/makestep.cpp b/src/plugins/autotoolsprojectmanager/makestep.cpp index 24857799995..51206624c41 100644 --- a/src/plugins/autotoolsprojectmanager/makestep.cpp +++ b/src/plugins/autotoolsprojectmanager/makestep.cpp @@ -186,7 +186,7 @@ bool MakeStep::init() // addToEnvironment() to not screw up the users run environment. env.set(QLatin1String("LC_ALL"), QLatin1String("C")); pp->setEnvironment(env); - pp->setWorkingDirectory(bc->buildDirectory()); + pp->setWorkingDirectory(bc->buildDirectory().toString()); pp->setCommand(tc ? tc->makeCommand(bc->environment()) : QLatin1String("make")); pp->setArguments(arguments); pp->resolveAll(); @@ -321,7 +321,7 @@ void MakeStepConfigWidget::updateDetails() ProcessParameters param; param.setMacroExpander(bc->macroExpander()); param.setEnvironment(bc->environment()); - param.setWorkingDirectory(bc->buildDirectory()); + param.setWorkingDirectory(bc->buildDirectory().toString()); param.setCommand(tc->makeCommand(bc->environment())); param.setArguments(arguments); m_summaryText = param.summary(displayName()); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index f460ec62220..3af1ccf9015 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -44,7 +44,6 @@ using namespace CMakeProjectManager; using namespace Internal; namespace { -const char BUILD_DIRECTORY_KEY[] = "CMakeProjectManager.CMakeBuildConfiguration.BuildDirectory"; const char USE_NINJA_KEY[] = "CMakeProjectManager.CMakeBuildConfiguration.UseNinja"; } // namespace @@ -52,15 +51,14 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(ProjectExplorer::Target *parent BuildConfiguration(parent, Core::Id(Constants::CMAKE_BC_ID)), m_useNinja(false) { CMakeProject *project = static_cast<CMakeProject *>(parent->project()); - m_buildDirectory = project->shadowBuildDirectory(project->projectFilePath(), - parent->kit(), - displayName()); + setBuildDirectory(Utils::FileName::fromString(project->shadowBuildDirectory(project->projectFilePath(), + parent->kit(), + displayName()))); } CMakeBuildConfiguration::CMakeBuildConfiguration(ProjectExplorer::Target *parent, CMakeBuildConfiguration *source) : BuildConfiguration(parent, source), - m_buildDirectory(source->m_buildDirectory), m_msvcVersion(source->m_msvcVersion), m_useNinja(false) { @@ -71,7 +69,6 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(ProjectExplorer::Target *parent QVariantMap CMakeBuildConfiguration::toMap() const { QVariantMap map(ProjectExplorer::BuildConfiguration::toMap()); - map.insert(QLatin1String(BUILD_DIRECTORY_KEY), m_buildDirectory); map.insert(QLatin1String(USE_NINJA_KEY), m_useNinja); return map; } @@ -81,7 +78,6 @@ bool CMakeBuildConfiguration::fromMap(const QVariantMap &map) if (!BuildConfiguration::fromMap(map)) return false; - m_buildDirectory = map.value(QLatin1String(BUILD_DIRECTORY_KEY)).toString(); m_useNinja = map.value(QLatin1String(USE_NINJA_KEY), false).toBool(); return true; @@ -108,20 +104,6 @@ ProjectExplorer::NamedWidget *CMakeBuildConfiguration::createConfigWidget() return new CMakeBuildSettingsWidget(this); } -QString CMakeBuildConfiguration::buildDirectory() const -{ - return m_buildDirectory; -} - -void CMakeBuildConfiguration::setBuildDirectory(const QString &buildDirectory) -{ - if (m_buildDirectory == buildDirectory) - return; - m_buildDirectory = buildDirectory; - emit buildDirectoryChanged(); - emit environmentChanged(); -} - /*! \class CMakeBuildConfigurationFactory */ @@ -205,7 +187,7 @@ CMakeBuildConfiguration *CMakeBuildConfigurationFactory::create(ProjectExplorer: cleanMakeStep->setAdditionalArguments(QLatin1String("clean")); cleanMakeStep->setClean(true); - bc->setBuildDirectory(copw.buildDirectory()); + bc->setBuildDirectory(Utils::FileName::fromString(copw.buildDirectory())); bc->setUseNinja(copw.useNinja()); // Default to all @@ -254,7 +236,7 @@ bool CMakeBuildConfigurationFactory::canHandle(const ProjectExplorer::Target *t) ProjectExplorer::BuildConfiguration::BuildType CMakeBuildConfiguration::buildType() const { QString cmakeBuildType; - QFile cmakeCache(buildDirectory() + QLatin1String("/CMakeCache.txt")); + QFile cmakeCache(buildDirectory().toString() + QLatin1String("/CMakeCache.txt")); if (cmakeCache.open(QIODevice::ReadOnly)) { while (!cmakeCache.atEnd()) { QByteArray line = cmakeCache.readLine(); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index 494c28ea2cf..d4d7286988a 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -39,6 +39,7 @@ class ToolChain; namespace CMakeProjectManager { namespace Internal { +class CMakeProject; class CMakeBuildConfigurationFactory; @@ -52,9 +53,6 @@ public: ~CMakeBuildConfiguration(); ProjectExplorer::NamedWidget *createConfigWidget(); - QString buildDirectory() const; - - void setBuildDirectory(const QString &buildDirectory); QVariantMap toMap() const; @@ -71,9 +69,10 @@ protected: bool fromMap(const QVariantMap &map); private: - QString m_buildDirectory; QString m_msvcVersion; bool m_useNinja; + + friend class CMakeProject; }; class CMakeBuildConfigurationFactory : public ProjectExplorer::IBuildConfigurationFactory diff --git a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.h b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.h index 90db1252126..5b1a7f68410 100644 --- a/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.h +++ b/src/plugins/cmakeprojectmanager/cmakeopenprojectwizard.h @@ -78,7 +78,7 @@ public: BuildInfo(CMakeBuildConfiguration *bc) : sourceDirectory(bc->target()->project()->projectDirectory()) - , buildDirectory(bc->buildDirectory()) + , buildDirectory(bc->buildDirectory().toString()) , environment(bc->environment()) , useNinja(bc->useNinja()) , kit(bc->target()->kit()) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 3be2f5f4831..e0044282c16 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -135,7 +135,7 @@ void CMakeProject::changeActiveBuildConfiguration(ProjectExplorer::BuildConfigur CMakeBuildConfiguration *cmakebc = static_cast<CMakeBuildConfiguration *>(bc); // Pop up a dialog asking the user to rerun cmake - QString cbpFile = CMakeManager::findCbpFile(QDir(bc->buildDirectory())); + QString cbpFile = CMakeManager::findCbpFile(QDir(bc->buildDirectory().toString())); QFileInfo cbpFileFi(cbpFile); CMakeOpenProjectWizard::Mode mode = CMakeOpenProjectWizard::Nothing; if (!cbpFileFi.exists()) { @@ -180,7 +180,7 @@ void CMakeProject::activeTargetWasChanged(Target *target) void CMakeProject::changeBuildDirectory(CMakeBuildConfiguration *bc, const QString &newBuildDirectory) { - bc->setBuildDirectory(newBuildDirectory); + bc->setBuildDirectory(Utils::FileName::fromString(newBuildDirectory)); parseCMakeLists(); } @@ -210,7 +210,7 @@ bool CMakeProject::parseCMakeLists() document->infoBar()->removeInfo(Core::Id("CMakeEditor.RunCMake")); // Find cbp file - QString cbpFile = CMakeManager::findCbpFile(activeBC->buildDirectory()); + QString cbpFile = CMakeManager::findCbpFile(activeBC->buildDirectory().toString()); if (cbpFile.isEmpty()) { emit buildTargetsChanged(); @@ -559,7 +559,7 @@ bool CMakeProject::fromMap(const QVariantMap &map) CMakeBuildConfiguration *bc(new CMakeBuildConfiguration(t)); bc->setDefaultDisplayName(QLatin1String("all")); bc->setUseNinja(copw.useNinja()); - bc->setBuildDirectory(copw.buildDirectory()); + bc->setBuildDirectory(Utils::FileName::fromString(copw.buildDirectory())); ProjectExplorer::BuildStepList *buildSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD); ProjectExplorer::BuildStepList *cleanSteps = bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN); @@ -585,7 +585,7 @@ bool CMakeProject::fromMap(const QVariantMap &map) CMakeBuildConfiguration *activeBC = qobject_cast<CMakeBuildConfiguration *>(activeTarget()->activeBuildConfiguration()); if (!activeBC) return false; - QString cbpFile = CMakeManager::findCbpFile(QDir(activeBC->buildDirectory())); + QString cbpFile = CMakeManager::findCbpFile(QDir(activeBC->buildDirectory().toString())); QFileInfo cbpFileFi(cbpFile); CMakeOpenProjectWizard::Mode mode = CMakeOpenProjectWizard::Nothing; @@ -669,7 +669,7 @@ QString CMakeProject::uiHeaderFile(const QString &uiFile) QDir srcDirRoot = QDir(project.toString()); QString relativePath = srcDirRoot.relativeFilePath(baseDirectory.toString()); - QDir buildDir = QDir(activeTarget()->activeBuildConfiguration()->buildDirectory()); + QDir buildDir = QDir(activeTarget()->activeBuildConfiguration()->buildDirectory().toString()); QString uiHeaderFilePath = buildDir.absoluteFilePath(relativePath); uiHeaderFilePath += QLatin1String("/ui_"); uiHeaderFilePath += fi.completeBaseName(); @@ -839,8 +839,8 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc) fl->addRow(tr("Build directory:"), hbox); m_buildConfiguration = bc; - m_pathLineEdit->setText(m_buildConfiguration->buildDirectory()); - if (m_buildConfiguration->buildDirectory() == bc->target()->project()->projectDirectory()) + m_pathLineEdit->setText(m_buildConfiguration->rawBuildDirectory().toString()); + if (m_buildConfiguration->buildDirectory().toString() == bc->target()->project()->projectDirectory()) m_changeButton->setEnabled(false); else m_changeButton->setEnabled(true); @@ -856,7 +856,7 @@ void CMakeBuildSettingsWidget::openChangeBuildDirectoryDialog() if (copw.exec() == QDialog::Accepted) { project->changeBuildDirectory(m_buildConfiguration, copw.buildDirectory()); m_buildConfiguration->setUseNinja(copw.useNinja()); - m_pathLineEdit->setText(m_buildConfiguration->buildDirectory()); + m_pathLineEdit->setText(m_buildConfiguration->rawBuildDirectory().toString()); } } diff --git a/src/plugins/cmakeprojectmanager/makestep.cpp b/src/plugins/cmakeprojectmanager/makestep.cpp index 9dad1172f6a..957f9cf069f 100644 --- a/src/plugins/cmakeprojectmanager/makestep.cpp +++ b/src/plugins/cmakeprojectmanager/makestep.cpp @@ -192,7 +192,7 @@ bool MakeStep::init() if (m_useNinja && !env.value(QLatin1String("NINJA_STATUS")).startsWith(m_ninjaProgressString)) env.set(QLatin1String("NINJA_STATUS"), m_ninjaProgressString + QLatin1String("%o/sec] ")); pp->setEnvironment(env); - pp->setWorkingDirectory(bc->buildDirectory()); + pp->setWorkingDirectory(bc->buildDirectory().toString()); pp->setCommand(makeCommand(tc, bc->environment())); pp->setArguments(arguments); pp->resolveAll(); @@ -408,7 +408,7 @@ void MakeStepConfigWidget::updateDetails() ProcessParameters param; param.setMacroExpander(bc->macroExpander()); param.setEnvironment(bc->environment()); - param.setWorkingDirectory(bc->buildDirectory()); + param.setWorkingDirectory(bc->buildDirectory().toString()); param.setCommand(m_makeStep->makeCommand(tc, bc->environment())); param.setArguments(arguments); m_summaryText = param.summary(displayName()); diff --git a/src/plugins/debugger/debuggerrunner.cpp b/src/plugins/debugger/debuggerrunner.cpp index ab172b5b22e..cc7588bd593 100644 --- a/src/plugins/debugger/debuggerrunner.cpp +++ b/src/plugins/debugger/debuggerrunner.cpp @@ -359,7 +359,7 @@ static DebuggerStartParameters localStartParameters(RunConfiguration *runConfigu if (const Project *project = target->project()) { sp.projectSourceDirectory = project->projectDirectory(); if (const BuildConfiguration *buildConfig = target->activeBuildConfiguration()) - sp.projectBuildDirectory = buildConfig->buildDirectory(); + sp.projectBuildDirectory = buildConfig->buildDirectory().toString(); sp.projectSourceFiles = project->files(Project::ExcludeGeneratedFiles); } } diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp index 663552a6357..3d451c6692b 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.cpp @@ -48,7 +48,6 @@ namespace GenericProjectManager { namespace Internal { const char GENERIC_BC_ID[] = "GenericProjectManager.GenericBuildConfiguration"; -const char BUILD_DIRECTORY_KEY[] = "GenericProjectManager.GenericBuildConfiguration.BuildDirectory"; GenericBuildConfiguration::GenericBuildConfiguration(Target *parent) : BuildConfiguration(parent, Core::Id(GENERIC_BC_ID)) @@ -61,50 +60,11 @@ GenericBuildConfiguration::GenericBuildConfiguration(Target *parent, const Core: } GenericBuildConfiguration::GenericBuildConfiguration(Target *parent, GenericBuildConfiguration *source) : - BuildConfiguration(parent, source), - m_buildDirectory(source->m_buildDirectory) + BuildConfiguration(parent, source) { cloneSteps(source); } -QVariantMap GenericBuildConfiguration::toMap() const -{ - QVariantMap map(BuildConfiguration::toMap()); - map.insert(QLatin1String(BUILD_DIRECTORY_KEY), m_buildDirectory); - return map; -} - -bool GenericBuildConfiguration::fromMap(const QVariantMap &map) -{ - m_buildDirectory = map.value(QLatin1String(BUILD_DIRECTORY_KEY), target()->project()->projectDirectory()).toString(); - - return BuildConfiguration::fromMap(map); -} - -QString GenericBuildConfiguration::buildDirectory() const -{ - // Convert to absolute path when necessary - const QDir projectDir(target()->project()->projectDirectory()); - return projectDir.absoluteFilePath(m_buildDirectory); -} - -/** - * Returns the build directory unmodified, instead of making it absolute like - * buildDirectory() does. - */ -QString GenericBuildConfiguration::rawBuildDirectory() const -{ - return m_buildDirectory; -} - -void GenericBuildConfiguration::setBuildDirectory(const QString &buildDirectory) -{ - if (m_buildDirectory == buildDirectory) - return; - m_buildDirectory = buildDirectory; - emit buildDirectoryChanged(); -} - NamedWidget *GenericBuildConfiguration::createConfigWidget() { return new GenericBuildSettingsWidget(this); @@ -244,13 +204,21 @@ GenericBuildSettingsWidget::GenericBuildSettingsWidget(GenericBuildConfiguration m_buildConfiguration = bc; m_pathChooser->setBaseDirectory(bc->target()->project()->projectDirectory()); - m_pathChooser->setPath(m_buildConfiguration->rawBuildDirectory()); + m_pathChooser->setEnvironment(bc->environment()); + m_pathChooser->setPath(m_buildConfiguration->rawBuildDirectory().toString()); setDisplayName(tr("Generic Manager")); + + connect(bc, SIGNAL(environmentChanged()), this, SLOT(environmentHasChanged())); } void GenericBuildSettingsWidget::buildDirectoryChanged() { - m_buildConfiguration->setBuildDirectory(m_pathChooser->rawPath()); + m_buildConfiguration->setBuildDirectory(Utils::FileName::fromString(m_pathChooser->rawPath())); +} + +void GenericBuildSettingsWidget::environmentHasChanged() +{ + m_pathChooser->setEnvironment(m_buildConfiguration->environment()); } } // namespace Internal diff --git a/src/plugins/genericprojectmanager/genericbuildconfiguration.h b/src/plugins/genericprojectmanager/genericbuildconfiguration.h index 996fa4ae424..38624547ab9 100644 --- a/src/plugins/genericprojectmanager/genericbuildconfiguration.h +++ b/src/plugins/genericprojectmanager/genericbuildconfiguration.h @@ -40,6 +40,7 @@ namespace Internal { class GenericTarget; class GenericBuildConfigurationFactory; +class GenericBuildSettingsWidget; class GenericBuildConfiguration : public ProjectExplorer::BuildConfiguration { @@ -50,21 +51,14 @@ public: explicit GenericBuildConfiguration(ProjectExplorer::Target *parent); ProjectExplorer::NamedWidget *createConfigWidget(); - QString buildDirectory() const; - QString rawBuildDirectory() const; - void setBuildDirectory(const QString &buildDirectory); - - QVariantMap toMap() const; BuildType buildType() const; protected: GenericBuildConfiguration(ProjectExplorer::Target *parent, GenericBuildConfiguration *source); GenericBuildConfiguration(ProjectExplorer::Target *parent, const Core::Id id); - virtual bool fromMap(const QVariantMap &map); -private: - QString m_buildDirectory; + friend class GenericBuildSettingsWidget; }; class GenericBuildConfigurationFactory : public ProjectExplorer::IBuildConfigurationFactory @@ -98,6 +92,7 @@ public: private slots: void buildDirectoryChanged(); + void environmentHasChanged(); private: Utils::PathChooser *m_pathChooser; diff --git a/src/plugins/genericprojectmanager/genericmakestep.cpp b/src/plugins/genericprojectmanager/genericmakestep.cpp index da24383a734..4fcce35c1d4 100644 --- a/src/plugins/genericprojectmanager/genericmakestep.cpp +++ b/src/plugins/genericprojectmanager/genericmakestep.cpp @@ -113,7 +113,7 @@ bool GenericMakeStep::init() ProcessParameters *pp = processParameters(); pp->setMacroExpander(bc->macroExpander()); - pp->setWorkingDirectory(bc->buildDirectory()); + pp->setWorkingDirectory(bc->buildDirectory().toString()); Utils::Environment env = bc->environment(); // Force output to english for the parsers. Do this here and not in the toolchain's // addToEnvironment() to not screw up the users run environment. @@ -301,7 +301,7 @@ void GenericMakeStepConfigWidget::updateDetails() ProcessParameters param; param.setMacroExpander(bc->macroExpander()); - param.setWorkingDirectory(bc->buildDirectory()); + param.setWorkingDirectory(bc->buildDirectory().toString()); param.setEnvironment(bc->environment()); param.setCommand(m_makeStep->makeCommand(bc->environment())); param.setArguments(m_makeStep->allArguments()); diff --git a/src/plugins/madde/maemoinstalltosysrootstep.cpp b/src/plugins/madde/maemoinstalltosysrootstep.cpp index 00c918b7127..8352b291950 100644 --- a/src/plugins/madde/maemoinstalltosysrootstep.cpp +++ b/src/plugins/madde/maemoinstalltosysrootstep.cpp @@ -366,7 +366,7 @@ bool MaemoMakeInstallToSysrootStep::init() processParameters()->setCommand(command); processParameters()->setArguments(args.join(QLatin1String(" "))); processParameters()->setEnvironment(env); - processParameters()->setWorkingDirectory(bc->buildDirectory()); + processParameters()->setWorkingDirectory(bc->buildDirectory().toString()); return true; } diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index 9c8c41d807d..72e52a69aa5 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -49,6 +49,7 @@ static const char BUILD_STEP_LIST_COUNT[] = "ProjectExplorer.BuildConfiguration. static const char BUILD_STEP_LIST_PREFIX[] = "ProjectExplorer.BuildConfiguration.BuildStepList."; static const char CLEAR_SYSTEM_ENVIRONMENT_KEY[] = "ProjectExplorer.BuildConfiguration.ClearSystemEnvironment"; static const char USER_ENVIRONMENT_CHANGES_KEY[] = "ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"; +static const char BUILDDIRECTORY_KEY[] = "ProjectExplorer.BuildConfiguration.BuildDirectory"; namespace ProjectExplorer { namespace Internal { @@ -68,7 +69,7 @@ bool BuildConfigMacroExpander::resolveMacro(const QString &name, QString *ret) return true; } if (name == QLatin1String("buildDir")) { - *ret = QDir::toNativeSeparators(m_bc->buildDirectory()); + *ret = m_bc->buildDirectory().toUserOutput(); return true; } *ret = Core::VariableManager::value(name.toUtf8()); @@ -95,13 +96,15 @@ BuildConfiguration::BuildConfiguration(Target *target, const Core::Id id) : connect(target, SIGNAL(kitChanged()), this, SLOT(handleKitUpdate())); + connect(this, SIGNAL(environmentChanged()), this, SLOT(emitBuildDirectoryChanged())); } BuildConfiguration::BuildConfiguration(Target *target, BuildConfiguration *source) : ProjectConfiguration(target, source), m_clearSystemEnvironment(source->m_clearSystemEnvironment), m_userEnvironmentChanges(source->m_userEnvironmentChanges), - m_macroExpander(0) + m_macroExpander(0), + m_buildDirectory(source->m_buildDirectory) { Q_ASSERT(target); // Do not clone stepLists here, do that in the derived constructor instead @@ -119,6 +122,23 @@ BuildConfiguration::~BuildConfiguration() delete m_macroExpander; } +Utils::FileName BuildConfiguration::buildDirectory() const +{ + QString path = QDir::cleanPath(environment().expandVariables(m_buildDirectory.toString())); + return Utils::FileName::fromString(QDir::cleanPath(QDir(target()->project()->projectDirectory()).absoluteFilePath(path))); +} + +Utils::FileName BuildConfiguration::rawBuildDirectory() const +{ + return m_buildDirectory; +} + +void BuildConfiguration::setBuildDirectory(const Utils::FileName &dir) +{ + m_buildDirectory = dir; + emitBuildDirectoryChanged(); +} + QList<NamedWidget *> BuildConfiguration::createSubConfigWidgets() { return QList<NamedWidget *>() << new ProjectExplorer::BuildEnvironmentWidget(this); @@ -152,6 +172,7 @@ QVariantMap BuildConfiguration::toMap() const QVariantMap map(ProjectConfiguration::toMap()); map.insert(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY), m_clearSystemEnvironment); map.insert(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY), Utils::EnvironmentItem::toStringList(m_userEnvironmentChanges)); + map.insert(QLatin1String(BUILDDIRECTORY_KEY), m_buildDirectory.toString()); map.insert(QLatin1String(BUILD_STEP_LIST_COUNT), m_stepLists.count()); for (int i = 0; i < m_stepLists.count(); ++i) @@ -164,6 +185,7 @@ bool BuildConfiguration::fromMap(const QVariantMap &map) { m_clearSystemEnvironment = map.value(QLatin1String(CLEAR_SYSTEM_ENVIRONMENT_KEY)).toBool(); m_userEnvironmentChanges = Utils::EnvironmentItem::fromStringList(map.value(QLatin1String(USER_ENVIRONMENT_CHANGES_KEY)).toStringList()); + m_buildDirectory = Utils::FileName::fromString(map.value(QLatin1String(BUILDDIRECTORY_KEY)).toString()); emitEnvironmentChanged(); @@ -204,7 +226,7 @@ void BuildConfiguration::emitEnvironmentChanged() if (env == m_cachedEnvironment) return; m_cachedEnvironment = env; - emit environmentChanged(); + emit environmentChanged(); // might trigger buildDirectoryChanged signal! } void BuildConfiguration::handleKitUpdate() @@ -212,6 +234,14 @@ void BuildConfiguration::handleKitUpdate() emitEnvironmentChanged(); } +void BuildConfiguration::emitBuildDirectoryChanged() +{ + if (buildDirectory() != m_lastEmmitedBuildDirectory) { + m_lastEmmitedBuildDirectory = buildDirectory(); + emit buildDirectoryChanged(); + } +} + Target *BuildConfiguration::target() const { return static_cast<Target *>(parent()); diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index 975c23c04cf..3f2cf3759dd 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -34,10 +34,9 @@ #include "projectconfiguration.h" #include <utils/environment.h> +#include <utils/fileutils.h> -namespace Utils { -class AbstractMacroExpander; -} +namespace Utils { class AbstractMacroExpander; } namespace ProjectExplorer { @@ -56,7 +55,8 @@ public: // ctors are protected virtual ~BuildConfiguration(); - virtual QString buildDirectory() const = 0; + Utils::FileName buildDirectory() const; + Utils::FileName rawBuildDirectory() const; virtual ProjectExplorer::NamedWidget *createConfigWidget() = 0; virtual QList<NamedWidget *> createSubConfigWidgets(); @@ -99,10 +99,12 @@ protected: BuildConfiguration(Target *target, const Core::Id id); BuildConfiguration(Target *target, BuildConfiguration *source); + virtual void setBuildDirectory(const Utils::FileName &dir); void cloneSteps(BuildConfiguration *source); private slots: void handleKitUpdate(); + void emitBuildDirectoryChanged(); private: void emitEnvironmentChanged(); @@ -111,6 +113,8 @@ private: QList<Utils::EnvironmentItem> m_userEnvironmentChanges; QList<BuildStepList *> m_stepLists; Utils::AbstractMacroExpander *m_macroExpander; + Utils::FileName m_buildDirectory; + Utils::FileName m_lastEmmitedBuildDirectory; mutable Utils::Environment m_cachedEnvironment; }; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index da318778090..544e18b7cd6 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1129,7 +1129,7 @@ void ProjectExplorerPlugin::updateVariable(const QByteArray &variable) if (variable == Constants::VAR_CURRENTPROJECT_BUILDPATH) { if (currentProject() && currentProject()->activeTarget() && currentProject()->activeTarget()->activeBuildConfiguration()) { Core::VariableManager::insert(variable, - currentProject()->activeTarget()->activeBuildConfiguration()->buildDirectory()); + currentProject()->activeTarget()->activeBuildConfiguration()->buildDirectory().toUserOutput()); } else { Core::VariableManager::remove(variable); } diff --git a/src/plugins/projectexplorer/settingsaccessor.cpp b/src/plugins/projectexplorer/settingsaccessor.cpp index 84991e5652e..4c5f76347d8 100644 --- a/src/plugins/projectexplorer/settingsaccessor.cpp +++ b/src/plugins/projectexplorer/settingsaccessor.cpp @@ -421,6 +421,23 @@ public: QVariantMap update(Project *project, const QVariantMap &map); }; +// Version 14 Move builddir into BuildConfiguration +class Version14Handler : public UserFileVersionHandler +{ +public: + int userFileVersion() const + { + return 14; + } + + QString displayUserFileVersion() const + { + return QLatin1String("3.0-pre1"); + } + + QVariantMap update(Project *project, const QVariantMap &map); +}; + } // namespace // @@ -513,6 +530,7 @@ SettingsAccessor::SettingsAccessor(Project *project) : addVersionHandler(new Version11Handler); addVersionHandler(new Version12Handler); addVersionHandler(new Version13Handler); + addVersionHandler(new Version14Handler); } SettingsAccessor::~SettingsAccessor() @@ -2768,3 +2786,23 @@ QVariantMap Version13Handler::update(Project *project, const QVariantMap &map) } return result; } + +QVariantMap Version14Handler::update(Project *project, const QVariantMap &map) +{ + QVariantMap result; + QMapIterator<QString, QVariant> it(map); + while (it.hasNext()) { + it.next(); + if (it.value().type() == QVariant::Map) + result.insert(it.key(), update(project, it.value().toMap())); + else if (it.key() == QLatin1String("AutotoolsProjectManager.AutotoolsBuildConfiguration.BuildDirectory") + || it.key() == QLatin1String("CMakeProjectManager.CMakeBuildConfiguration.BuildDirectory") + || it.key() == QLatin1String("GenericProjectManager.GenericBuildConfiguration.BuildDirectory") + || it.key() == QLatin1String("Qbs.BuildDirectory") + || it.key() == QLatin1String("Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory")) + result.insert(QLatin1String("ProjectExplorer.BuildConfiguration.BuildDirectory"), it.value()); + else + result.insert(it.key(), it.value()); + } + return result; +} diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp index 7f8ed0cb6fe..e08a616bd85 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.cpp @@ -46,7 +46,6 @@ #include <QInputDialog> static const char QBS_BC_ID[] = "Qbs.QbsBuildConfiguration"; -static const char QBS_BUILD_DIRECTORY_KEY[] = "Qbs.BuildDirectory"; namespace QbsProjectManager { namespace Internal { @@ -74,19 +73,11 @@ QbsBuildConfiguration::QbsBuildConfiguration(ProjectExplorer::Target *target, co { } QbsBuildConfiguration::QbsBuildConfiguration(ProjectExplorer::Target *target, QbsBuildConfiguration *source) : - BuildConfiguration(target, source), - m_buildDirectory(source->m_buildDirectory) + BuildConfiguration(target, source) { cloneSteps(source); } -QVariantMap QbsBuildConfiguration::toMap() const -{ - QVariantMap map(BuildConfiguration::toMap()); - map.insert(QLatin1String(QBS_BUILD_DIRECTORY_KEY), m_buildDirectory.toUserOutput()); - return map; -} - bool QbsBuildConfiguration::fromMap(const QVariantMap &map) { if (!BuildConfiguration::fromMap(map)) @@ -101,8 +92,6 @@ bool QbsBuildConfiguration::fromMap(const QVariantMap &map) connect(bs, SIGNAL(qbsConfigurationChanged()), this, SIGNAL(qbsConfigurationChanged())); } - m_buildDirectory = Utils::FileName::fromUserInput(map.value(QLatin1String(QBS_BUILD_DIRECTORY_KEY)).toString()); - return true; } @@ -139,12 +128,6 @@ QVariantMap QbsBuildConfiguration::qbsConfiguration() const return config; } -QString QbsBuildConfiguration::buildDirectory() const -{ - QString path = QDir::cleanPath(environment().expandVariables(m_buildDirectory.toString())); - return QDir::cleanPath(QDir(target()->project()->projectDirectory()).absoluteFilePath(path)); -} - Internal::QbsProject *QbsBuildConfiguration::project() const { return qobject_cast<Internal::QbsProject *>(target()->project()); @@ -239,14 +222,6 @@ QbsBuildConfiguration *QbsBuildConfiguration::setup(ProjectExplorer::Target *t, return bc; } -void QbsBuildConfiguration::setBuildDirectory(const Utils::FileName &dir) -{ - if (m_buildDirectory == dir) - return; - m_buildDirectory = dir; - emit buildDirectoryChanged(); -} - // --------------------------------------------------------------------------- // QbsBuildConfigurationFactory: // --------------------------------------------------------------------------- diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h index 022165b7fe6..7959137f8f6 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h +++ b/src/plugins/qbsprojectmanager/qbsbuildconfiguration.h @@ -57,12 +57,9 @@ public: QbsBuildStep *qbsStep() const; QVariantMap qbsConfiguration() const; - QString buildDirectory() const; Internal::QbsProject *project() const; - QVariantMap toMap() const; - ProjectExplorer::IOutputParser *createOutputParser() const; bool isEnabled() const; @@ -96,11 +93,9 @@ private: const QString &displayName, const QVariantMap &buildData, const Utils::FileName &directory); - void setBuildDirectory(const Utils::FileName &dir); bool m_isParsing; bool m_parsingError; - Utils::FileName m_buildDirectory; QStringList m_changedFiles; QStringList m_activeFileTags; QStringList m_products; diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfigurationwidget.cpp b/src/plugins/qbsprojectmanager/qbsbuildconfigurationwidget.cpp index b6f6c907435..45e61357185 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfigurationwidget.cpp +++ b/src/plugins/qbsprojectmanager/qbsbuildconfigurationwidget.cpp @@ -31,6 +31,8 @@ #include "qbsbuildconfiguration.h" +#include <projectexplorer/target.h> +#include <projectexplorer/project.h> #include <utils/detailswidget.h> #include <utils/pathchooser.h> @@ -45,8 +47,8 @@ QbsBuildConfigurationWidget::QbsBuildConfigurationWidget(QbsProjectManager::Inte m_buildConfiguration(bc), m_ignoreChange(false) { - connect(m_buildConfiguration, SIGNAL(buildDirectoryChanged()), - this, SLOT(buildDirectoryChanged())); + connect(bc, SIGNAL(buildDirectoryChanged()), this, SLOT(buildDirectoryChanged())); + connect(bc, SIGNAL(environmentChanged()), this, SLOT(environmentHasChanged())); QVBoxLayout *vbox = new QVBoxLayout(this); vbox->setMargin(0); @@ -63,6 +65,8 @@ QbsBuildConfigurationWidget::QbsBuildConfigurationWidget(QbsProjectManager::Inte m_buildDirChooser = new Utils::PathChooser; m_buildDirChooser->setExpectedKind(Utils::PathChooser::Directory); + m_buildDirChooser->setBaseDirectory(bc->target()->project()->projectDirectory()); + m_buildDirChooser->setEnvironment(bc->environment()); layout->addWidget(m_buildDirChooser, 0, 1); connect(m_buildDirChooser, SIGNAL(changed(QString)), this, SLOT(buildDirEdited())); @@ -81,7 +85,12 @@ void QbsBuildConfigurationWidget::buildDirectoryChanged() if (m_ignoreChange) return; - m_buildDirChooser->setPath(m_buildConfiguration->buildDirectory()); + m_buildDirChooser->setPath(m_buildConfiguration->rawBuildDirectory().toString()); +} + +void QbsBuildConfigurationWidget::environmentHasChanged() +{ + m_buildDirChooser->setEnvironment(m_buildConfiguration->environment()); } } // namespace Internal diff --git a/src/plugins/qbsprojectmanager/qbsbuildconfigurationwidget.h b/src/plugins/qbsprojectmanager/qbsbuildconfigurationwidget.h index 0625e5ae39b..b91e7d8e908 100644 --- a/src/plugins/qbsprojectmanager/qbsbuildconfigurationwidget.h +++ b/src/plugins/qbsprojectmanager/qbsbuildconfigurationwidget.h @@ -53,6 +53,7 @@ private slots: // Changes triggered from creator void buildDirectoryChanged(); + void environmentHasChanged(); private: Internal::QbsBuildConfiguration *m_buildConfiguration; diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 13d3ed8cf09..aa5e0156b33 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -349,7 +349,7 @@ void QbsProject::parseCurrentBuildConfiguration() QbsBuildConfiguration *bc = qobject_cast<QbsBuildConfiguration *>(activeTarget()->activeBuildConfiguration()); if (!bc) return; - parse(bc->qbsConfiguration(), bc->environment(), bc->buildDirectory()); + parse(bc->qbsConfiguration(), bc->environment(), bc->buildDirectory().toString()); } bool QbsProject::fromMap(const QVariantMap &map) diff --git a/src/plugins/qnx/blackberryabstractdeploystep.cpp b/src/plugins/qnx/blackberryabstractdeploystep.cpp index 8931989b405..f97c56df8e0 100644 --- a/src/plugins/qnx/blackberryabstractdeploystep.cpp +++ b/src/plugins/qnx/blackberryabstractdeploystep.cpp @@ -81,7 +81,7 @@ bool BlackBerryAbstractDeployStep::init() m_processCounter = -1; m_environment = target()->activeBuildConfiguration()->environment(); - m_buildDirectory = target()->activeBuildConfiguration()->buildDirectory(); + m_buildDirectory = target()->activeBuildConfiguration()->buildDirectory().toString(); return true; } diff --git a/src/plugins/qnx/blackberrycreatepackagestep.cpp b/src/plugins/qnx/blackberrycreatepackagestep.cpp index 4c21158323d..b8ef2f80110 100644 --- a/src/plugins/qnx/blackberrycreatepackagestep.cpp +++ b/src/plugins/qnx/blackberrycreatepackagestep.cpp @@ -301,8 +301,8 @@ bool BlackBerryCreatePackageStep::prepareAppDescriptorFile(const QString &appDes } } - const QString buildDir = target()->activeBuildConfiguration()->buildDirectory(); if (!preparedFile.open(QIODevice::WriteOnly)) { + const QString buildDir = target()->activeBuildConfiguration()->buildDirectory().toUserOutput(); raiseError(tr("Could not create prepared application descriptor file in '%1'").arg(buildDir)); return false; } diff --git a/src/plugins/qnx/blackberrydeployinformation.cpp b/src/plugins/qnx/blackberrydeployinformation.cpp index 5698bd8893e..ed4412593be 100644 --- a/src/plugins/qnx/blackberrydeployinformation.cpp +++ b/src/plugins/qnx/blackberrydeployinformation.cpp @@ -221,7 +221,9 @@ void BlackBerryDeployInformation::fromMap(const QVariantMap &map) const QString targetName = innerMap.value(QLatin1String(TARGET_KEY)).toString(); const QString sourceDir = innerMap.value(QLatin1String(SOURCE_KEY)).toString(); - BarPackageDeployInformation deployInformation(enabled, proFilePath, sourceDir, m_target->activeBuildConfiguration()->buildDirectory(), targetName); + BarPackageDeployInformation deployInformation(enabled, proFilePath, sourceDir, + m_target->activeBuildConfiguration()->buildDirectory().toString(), + targetName); deployInformation.userAppDescriptorPath = appDescriptorPath; deployInformation.userPackagePath = packagePath; m_deployInformation << deployInformation; @@ -248,7 +250,7 @@ void BlackBerryDeployInformation::updateModel() || !m_deployInformation[i].userPackagePath.isEmpty())) { BarPackageDeployInformation deployInformation = m_deployInformation[i]; // In case the user resets the bar package path (or if it is empty already), we need the current build dir - deployInformation.buildDir = m_target->activeBuildConfiguration()->buildDirectory(); + deployInformation.buildDir = m_target->activeBuildConfiguration()->buildDirectory().toString(); keep << deployInformation; nodeFound = true; break; @@ -302,7 +304,7 @@ BarPackageDeployInformation BlackBerryDeployInformation::deployInformationFromNo Qt4ProjectManager::TargetInformation ti = node->targetInformation(); QFileInfo fi(node->path()); - const QString buildDir = m_target->activeBuildConfiguration()->buildDirectory(); + const QString buildDir = m_target->activeBuildConfiguration()->buildDirectory().toString(); return BarPackageDeployInformation(true, node->path(), fi.absolutePath(), buildDir, ti.target); } diff --git a/src/plugins/qnx/blackberryruncontrolfactory.cpp b/src/plugins/qnx/blackberryruncontrolfactory.cpp index 0e565353437..99ec7e33cbd 100644 --- a/src/plugins/qnx/blackberryruncontrolfactory.cpp +++ b/src/plugins/qnx/blackberryruncontrolfactory.cpp @@ -151,7 +151,7 @@ Debugger::DebuggerStartParameters BlackBerryRunControlFactory::startParameters( if (const ProjectExplorer::Project *project = runConfig->target()->project()) { params.projectSourceDirectory = project->projectDirectory(); if (const ProjectExplorer::BuildConfiguration *buildConfig = runConfig->target()->activeBuildConfiguration()) - params.projectBuildDirectory = buildConfig->buildDirectory(); + params.projectBuildDirectory = buildConfig->buildDirectory().toString(); params.projectSourceFiles = project->files(ProjectExplorer::Project::ExcludeGeneratedFiles); } diff --git a/src/plugins/qnx/qnxruncontrolfactory.cpp b/src/plugins/qnx/qnxruncontrolfactory.cpp index f979280ffa1..39aa384e377 100644 --- a/src/plugins/qnx/qnxruncontrolfactory.cpp +++ b/src/plugins/qnx/qnxruncontrolfactory.cpp @@ -102,7 +102,7 @@ static DebuggerStartParameters createDebuggerStartParameters(const QnxRunConfigu if (const ProjectExplorer::Project *project = runConfig->target()->project()) { params.projectSourceDirectory = project->projectDirectory(); if (const ProjectExplorer::BuildConfiguration *buildConfig = runConfig->target()->activeBuildConfiguration()) - params.projectBuildDirectory = buildConfig->buildDirectory(); + params.projectBuildDirectory = buildConfig->buildDirectory().toString(); params.projectSourceFiles = project->files(ProjectExplorer::Project::ExcludeGeneratedFiles); } diff --git a/src/plugins/qt4projectmanager/librarydetailscontroller.cpp b/src/plugins/qt4projectmanager/librarydetailscontroller.cpp index 8080054f6f8..73a7d79af2d 100644 --- a/src/plugins/qt4projectmanager/librarydetailscontroller.cpp +++ b/src/plugins/qt4projectmanager/librarydetailscontroller.cpp @@ -1060,7 +1060,7 @@ QString InternalLibraryDetailsController::snippet() const QDir rootBuildDir = rootDir; // If the project is unconfigured use the project dir if (ProjectExplorer::Target *t = project->activeTarget()) if (ProjectExplorer::BuildConfiguration *bc = t->activeBuildConfiguration()) - rootBuildDir = bc->buildDirectory(); + rootBuildDir = bc->buildDirectory().toString(); // the project for which we insert the snippet inside build tree QFileInfo pfi(rootBuildDir.filePath(proRelavitePath)); diff --git a/src/plugins/qt4projectmanager/makestep.cpp b/src/plugins/qt4projectmanager/makestep.cpp index 02a76cdec38..c0b0fb81d04 100644 --- a/src/plugins/qt4projectmanager/makestep.cpp +++ b/src/plugins/qt4projectmanager/makestep.cpp @@ -173,7 +173,7 @@ bool MakeStep::init() if (bc->subNodeBuild()) workingDirectory = bc->subNodeBuild()->buildDir(); else - workingDirectory = bc->buildDirectory(); + workingDirectory = bc->buildDirectory().toString(); pp->setWorkingDirectory(workingDirectory); QString makeCmd = tc->makeCommand(bc->environment()); @@ -415,7 +415,7 @@ void MakeStepConfigWidget::updateDetails() ProcessParameters param; param.setMacroExpander(bc->macroExpander()); - param.setWorkingDirectory(bc->buildDirectory()); + param.setWorkingDirectory(bc->buildDirectory().toString()); QString makeCmd = tc->makeCommand(bc->environment()); if (!m_makeStep->makeCommand().isEmpty()) makeCmd = m_makeStep->makeCommand(); diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp index ec2108ef273..1cae7daf886 100644 --- a/src/plugins/qt4projectmanager/qmakestep.cpp +++ b/src/plugins/qt4projectmanager/qmakestep.cpp @@ -248,7 +248,7 @@ bool QMakeStep::init() if (qt4bc->subNodeBuild()) workingDirectory = qt4bc->subNodeBuild()->buildDir(); else - workingDirectory = qt4bc->buildDirectory(); + workingDirectory = qt4bc->buildDirectory().toString(); FileName program = qtVersion->qmakeCommand(); diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp index 81786a4a3fa..795d8c8aa95 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp @@ -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; } diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.h b/src/plugins/qt4projectmanager/qt4buildconfiguration.h index e39e82c8d4d..b12dcaa1326 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.h +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.h @@ -45,6 +45,8 @@ class Qt4BuildConfigurationFactory; class Qt4ProFileNode; class BuildConfigurationInfo; +namespace Internal { class Qt4ProjectConfigWidget; } + class QT4PROJECTMANAGER_EXPORT Qt4BuildConfiguration : public ProjectExplorer::BuildConfiguration { Q_OBJECT @@ -55,10 +57,7 @@ public: ~Qt4BuildConfiguration(); ProjectExplorer::NamedWidget *createConfigWidget(); - QString buildDirectory() const; - QString rawBuildDirectory() const; bool isShadowBuild() const; - void setBuildDirectory(const QString &dir); void setSubNodeBuild(Qt4ProjectManager::Qt4ProFileNode *node); Qt4ProjectManager::Qt4ProFileNode *subNodeBuild() const; @@ -136,6 +135,7 @@ protected: private: void ctor(); QString defaultShadowBuildDirectory() const; + void setBuildDirectory(const Utils::FileName &directory); class LastKitState { @@ -155,11 +155,12 @@ private: bool m_shadowBuild; bool m_isEnabled; QString m_buildDirectory; - QString m_lastEmmitedBuildDirectory; bool m_qtVersionSupportsShadowBuilds; QtSupport::BaseQtVersion::QmakeBuildConfigs m_qmakeBuildConfiguration; Qt4ProjectManager::Qt4ProFileNode *m_subNodeBuild; ProjectExplorer::FileNode *m_fileNodeBuild; + + friend class Internal::Qt4ProjectConfigWidget; }; class QT4PROJECTMANAGER_EXPORT Qt4BuildConfigurationFactory : public ProjectExplorer::IBuildConfigurationFactory diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 805ea32ae4c..be3c7b4a21f 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -2246,7 +2246,7 @@ QString Qt4ProFileNode::buildDir(Qt4BuildConfiguration *bc) const bc = static_cast<Qt4BuildConfiguration *>(m_project->activeTarget()->activeBuildConfiguration()); if (!bc) return QString(); - return QDir::cleanPath(QDir(bc->buildDirectory()).absoluteFilePath(relativeDir)); + return QDir::cleanPath(QDir(bc->buildDirectory().toString()).absoluteFilePath(relativeDir)); } QString Qt4ProFileNode::uiDirectory() const diff --git a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp index 0f862c329c6..1468354cda0 100644 --- a/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp +++ b/src/plugins/qt4projectmanager/qt4projectconfigwidget.cpp @@ -67,9 +67,11 @@ Qt4ProjectConfigWidget::Qt4ProjectConfigWidget(Qt4BuildConfiguration *bc) m_ui->shadowBuildDirEdit->setPromptDialogTitle(tr("Shadow Build Directory")); m_ui->shadowBuildDirEdit->setExpectedKind(Utils::PathChooser::ExistingDirectory); + m_ui->shadowBuildDirEdit->setEnvironment(bc->environment()); + m_ui->shadowBuildDirEdit->setBaseDirectory(bc->target()->project()->projectDirectory()); bool isShadowBuild = bc->isShadowBuild(); if (isShadowBuild) { - m_ui->shadowBuildDirEdit->setPath(bc->rawBuildDirectory()); + m_ui->shadowBuildDirEdit->setPath(bc->rawBuildDirectory().toString()); m_ui->inSourceBuildDirEdit->setVisible(false); } else { m_ui->shadowBuildDirEdit->setPath(m_defaultShadowBuildDir); @@ -97,15 +99,11 @@ Qt4ProjectConfigWidget::Qt4ProjectConfigWidget(Qt4BuildConfiguration *bc) connect(bc->target(), SIGNAL(kitChanged()), this, SLOT(updateProblemLabel())); - m_ui->shadowBuildDirEdit->setEnvironment(m_buildConfiguration->environment()); - connect(m_buildConfiguration, SIGNAL(buildDirectoryChanged()), this, SLOT(buildDirectoryChanged())); connect(m_buildConfiguration, SIGNAL(qmakeBuildConfigurationChanged()), this, SLOT(updateProblemLabel())); - m_ui->shadowBuildDirEdit->setBaseDirectory(m_buildConfiguration->target()->project()->projectDirectory()); - setDisplayName(tr("General")); updateDetails(); @@ -121,7 +119,7 @@ void Qt4ProjectConfigWidget::updateDetails() { m_detailsContainer->setSummaryText( tr("building in <b>%1</b>") - .arg(QDir::toNativeSeparators(m_buildConfiguration->buildDirectory()))); + .arg(m_buildConfiguration->buildDirectory().toUserOutput())); } void Qt4ProjectConfigWidget::setProblemLabel(const QString &text) @@ -148,7 +146,7 @@ void Qt4ProjectConfigWidget::buildDirectoryChanged() m_ui->shadowBuildDirEdit->setEnabled(shadowBuild); m_browseButton->setEnabled(shadowBuild); - m_ui->shadowBuildDirEdit->setPath(m_buildConfiguration->rawBuildDirectory()); + m_ui->shadowBuildDirEdit->setPath(m_buildConfiguration->rawBuildDirectory().toString()); updateDetails(); updateProblemLabel(); @@ -171,9 +169,9 @@ void Qt4ProjectConfigWidget::shadowBuildClicked(bool checked) m_ignoreChange = true; if (checked) - m_buildConfiguration->setBuildDirectory(m_ui->shadowBuildDirEdit->rawPath()); + m_buildConfiguration->setBuildDirectory(Utils::FileName::fromString(m_ui->shadowBuildDirEdit->rawPath())); else - m_buildConfiguration->setBuildDirectory(m_ui->inSourceBuildDirEdit->rawPath()); + m_buildConfiguration->setBuildDirectory(Utils::FileName::fromString(m_ui->inSourceBuildDirEdit->rawPath())); m_ignoreChange = false; updateDetails(); @@ -182,11 +180,11 @@ void Qt4ProjectConfigWidget::shadowBuildClicked(bool checked) void Qt4ProjectConfigWidget::shadowBuildEdited() { - if (m_buildConfiguration->rawBuildDirectory() == m_ui->shadowBuildDirEdit->rawPath()) + if (m_buildConfiguration->rawBuildDirectory().toString() == m_ui->shadowBuildDirEdit->rawPath()) return; m_ignoreChange = true; - m_buildConfiguration->setBuildDirectory(m_ui->shadowBuildDirEdit->rawPath()); + m_buildConfiguration->setBuildDirectory(Utils::FileName::fromString(m_ui->shadowBuildDirEdit->rawPath())); m_ignoreChange = false; } @@ -214,7 +212,7 @@ void Qt4ProjectConfigWidget::updateProblemLabel() bool allGood = false; // we only show if we actually have a qmake and makestep if (m_buildConfiguration->qmakeStep() && m_buildConfiguration->makeStep()) { - QString makefile = m_buildConfiguration->buildDirectory() + QLatin1Char('/'); + QString makefile = m_buildConfiguration->buildDirectory().toString() + QLatin1Char('/'); if (m_buildConfiguration->makefile().isEmpty()) makefile.append(QLatin1String("Makefile")); else @@ -246,7 +244,7 @@ void Qt4ProjectConfigWidget::updateProblemLabel() if (allGood) { QString buildDirectory = m_buildConfiguration->target()->project()->projectDirectory();; if (m_buildConfiguration->isShadowBuild()) - buildDirectory = m_buildConfiguration->buildDirectory(); + buildDirectory = m_buildConfiguration->buildDirectory().toString(); QList<ProjectExplorer::Task> issues; issues = version->reportIssues(proFileName, buildDirectory); qSort(issues); @@ -278,12 +276,12 @@ void Qt4ProjectConfigWidget::updateProblemLabel() } else if (targetMismatch) { setProblemLabel(shadowBuildWarning + tr("A build for a different project exists in %1, which will be overwritten.", "%1 build directory") - .arg(QDir::toNativeSeparators(m_buildConfiguration->buildDirectory()))); + .arg(m_buildConfiguration->buildDirectory().toUserOutput())); return; } else if (incompatibleBuild) { setProblemLabel(shadowBuildWarning +tr("An incompatible build exists in %1, which will be overwritten.", "%1 build directory") - .arg(QDir::toNativeSeparators(m_buildConfiguration->buildDirectory()))); + .arg(m_buildConfiguration->buildDirectory().toUserOutput())); return; } else if (!shadowBuildWarning.isEmpty()) { setProblemLabel(shadowBuildWarning); diff --git a/src/plugins/remotelinux/abstractpackagingstep.cpp b/src/plugins/remotelinux/abstractpackagingstep.cpp index 05612e0ccff..ee3952747af 100644 --- a/src/plugins/remotelinux/abstractpackagingstep.cpp +++ b/src/plugins/remotelinux/abstractpackagingstep.cpp @@ -117,7 +117,7 @@ QString AbstractPackagingStep::cachedPackageDirectory() const QString AbstractPackagingStep::packageDirectory() const { return d->currentBuildConfiguration - ? d->currentBuildConfiguration->buildDirectory() : QString(); + ? d->currentBuildConfiguration->buildDirectory().toString() : QString(); } bool AbstractPackagingStep::isPackagingNeeded() const diff --git a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp index 8448103e587..9e53238bd32 100644 --- a/src/plugins/remotelinux/remotelinuxdebugsupport.cpp +++ b/src/plugins/remotelinux/remotelinuxdebugsupport.cpp @@ -111,7 +111,7 @@ DebuggerStartParameters LinuxDeviceDebugSupport::startParameters(const RemoteLin if (const Project *project = target->project()) { params.projectSourceDirectory = project->projectDirectory(); if (const BuildConfiguration *buildConfig = target->activeBuildConfiguration()) - params.projectBuildDirectory = buildConfig->buildDirectory(); + params.projectBuildDirectory = buildConfig->buildDirectory().toString(); params.projectSourceFiles = project->files(Project::ExcludeGeneratedFiles); } diff --git a/src/plugins/valgrind/memchecktool.cpp b/src/plugins/valgrind/memchecktool.cpp index 2eb6f8f2a3f..873840b079d 100644 --- a/src/plugins/valgrind/memchecktool.cpp +++ b/src/plugins/valgrind/memchecktool.cpp @@ -145,7 +145,7 @@ bool MemcheckErrorFilterProxyModel::filterAcceptsRow(int sourceRow, const QModel validFolders << project->projectDirectory(); foreach (Target *target, project->targets()) { foreach (BuildConfiguration *config, target->buildConfigurations()) - validFolders << config->buildDirectory(); + validFolders << config->buildDirectory().toString(); } } -- GitLab