diff --git a/src/plugins/autotoolsprojectmanager/autogenstep.cpp b/src/plugins/autotoolsprojectmanager/autogenstep.cpp index f8afd63a02cc2bd2c13b0f9474ce8afeb3bc7baa..06071a228e40ae090521249097bb3665017def75 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 adcb7b0096f1c2671f54d3f340225de561719dd8..1b8d7b8990a2c5f7ffe82a351c11abcb0aec0ca5 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 bf07d5c593ef2b25a3f16cbf8cfc7125054dc72f..26bdc479b605ed86458aec69c2f78e8d5437d749 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 639efc305d9308bca3e572dc833f3c755437ef34..7fb3a04792bc5a86af8bb5bb6f187a47feab1ef1 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 e55079283b6d11c47747e3961c3d075ddf18b7f1..627510bb467367bb78f937d24c902c7ff1d70461 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 459fb2e2342af8ca05672b8f8f5c8b394758c779..183c2e4300c15cc16b8e93e5953ca2fa3212031b 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 382737e709da2dd09766db391a9c26db125f377d..44a0c21f6d8887e47e74896467bdea2882fbd28d 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 687fcc924e6d989ef636e97f4b15ae29eb92e724..8f0b13d818d01d962ff4b086c326c8e15c65ba27 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 248577999958501c8f4e947fd9effd77dc879cea..51206624c41c2024af3b46740d9db73702e1e114 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 f460ec622203c04b0ecc5f241c76bf44f2483ff7..3af1ccf90153d53aa29105f3edb4bf2f6172000f 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 494c28ea2cfefe8ccdf02106dd55562d6b20a0bc..d4d7286988ac1992a9097a7c4b96d710cbca273d 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 90db12521262f96eb55f6c51e393fb6cfba92df6..5b1a7f6841064e75ea393998d9644a5abba646d8 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 3be2f5f483185b781b8e5bd0d23b1e7334c9835a..e0044282c164f9cf62076f9e15b16f3ddca4c406 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 9dad1172f6afd23d3f1b715531bd6ef52e2bda02..957f9cf069f67aaca6b39cf04c0d2ba4c7bfa3ed 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 ab172b5b22e90ccefdbce0d61da2f7e2d1dec43e..cc7588bd593bb681221fc973a11e56cac76f2cb5 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 663552a6357e6378774f42e2c35bc1473ac15600..3d451c6692b06a61c82b1fb28e84ed98572a70e9 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 996fa4ae4245e06398154926b3863c00088be575..38624547ab9f1937a7571d81d9f9aa669864e09d 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 da24383a734fa4d6f6e2e5d6955cce3fefb7aeb9..4fcce35c1d4d42a7affd30cd63ba60620091e81d 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 00c918b71273865e4ec756936cd37bafabce1c6d..8352b291950b943509757282abfba70ca1bfe393 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 9c8c41d807d498d84b16ea38b728e7340d97a78a..72e52a69aa55a3bbdb7d33490a54147bfbb43b7b 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 975c23c04cf14d90356eb5d23d5464d95aed02f5..3f2cf3759dd5289018724287f259d4fae4f3db90 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 da31877809035d521440cde925c9a0d89e1faa6a..544e18b7cd6670ce9f78c81b08f1615594a1b093 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 84991e5652e8eae13e8d5fea3d4b96fe1e049e00..4c5f76347d88eb2659f1fe2f8c62aae09050b11d 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 7f8ed0cb6fe1e86f89085abe9405e1676507d66a..e08a616bd8526252258b643b24d8887c354cca7a 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 022165b7fe69c37bdb1f30759be513bfdbee6ca3..7959137f8f6b57266863adb65b7a74f747fc15b2 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 b6f6c907435c88b236e98b6da3d77d7537d625fd..45e6135718511234c0a05715d1c1a9de290c1bdc 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 0625e5ae39b2a0cd5aff4616d30b6253741e9f7a..b91e7d8e90886b6a41e35d08202a9057e3910833 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 13d3ed8cf0973d8f4fc28f129eec8e9220f6020d..aa5e0156b3364e37a69dbbce2e8979cf8c55a7e2 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 8931989b40577e138846309ed9cfc7b2b3487691..f97c56df8e07811e2f411d27010d795e5ae54302 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 4c21158323d1ffefd221f7ecbda9e93935fe2327..b8ef2f80110f07d52499cabd761de9438a57fb49 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 5698bd8893e01485febdece732543c1fb1909a1a..ed4412593beb4e219c9c6124c9c36e4dd77a97a2 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 0e565353437087deaef69293b9c00c378eafc3b2..99ec7e33cbdec5fe411bfee3e45036596351747f 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 f979280ffa1cfcdebfbc656c474e293590780b82..39aa384e3771bc1bd18c886a45cfcf0bfcb9de39 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 8080054f6f8e4ba43b5a0cec9d1ff22f58d96c25..73a7d79af2d53c4f1c6d3a1f5fca305ce163ed08 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 02a76cdec3886abd9ef1ca6c3710b4ca20315e2c..c0b0fb81d0445c47cadf6433339eeebee89efc62 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 ec2108ef2735759cb51f1cc2acd9cc41f3b321c4..1cae7daf8862cf3e127219d49bf9e2b83228c3ce 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 81786a4a3fa328d6df22c2808f85ff956a5b9067..795d8c8aa95ac1f3d65048331c8c93cbcd57c1cc 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 e39e82c8d4dd67934874bc1439bb67333bef7e06..b12dcaa1326670749ac5b7442e2bed155e259b59 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 805ea32ae4cdab8b01413f966e83d79dfd5a531e..be3c7b4a21f2204097655f77356bb2c76bdd8a42 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 0f862c329c6ca1afe17c628102def3b19f4e62a3..1468354cda066f3e4b80889651291beeec5408e9 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 05612e0ccff6bf09c2de89ec7f654025da2899f8..ee3952747afca6ab8d381e1cab159f459e63fdc7 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 8448103e587e42f23632ad817d4a7b54c8499c86..9e53238bd3238ac0fc2ebc16b531097ffff2e9a3 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 2eb6f8f2a3f17b9a33e83319ccaced3b731047ef..873840b079d273164584e72d382a4c8dff66b852 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(); } }