From 7fc6af4ad68f77022f444896c1cef2924aafaa42 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 28 Jul 2021 20:49:55 +0300 Subject: [PATCH] ProjectExplorer: Do not generate new directory when original is in-place If the original configuration is not a shadow build, there is no reason to generate a new directory name when cloning the configuration. Change-Id: Ie84ee01ac70c69161e65a0b58cdfbfbe1a1630ab Reviewed-by: hjk Reviewed-by: Christian Kandeler --- .../buildsettingspropertiespage.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp index 87c855b12d7..c014a279642 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp @@ -27,6 +27,7 @@ #include "buildinfo.h" #include "buildstepspage.h" #include "target.h" +#include "project.h" #include "buildconfiguration.h" #include "projectconfigurationmodel.h" #include "session.h" @@ -300,13 +301,16 @@ void BuildSettingsWidget::cloneConfiguration() return; bc->setDisplayName(name); - const std::function isBuildDirOk = [this](const FilePath &candidate) { - if (candidate.exists()) - return false; - return !anyOf(m_target->buildConfigurations(), [&candidate](const BuildConfiguration *bc) { - return bc->buildDirectory() == candidate; }); - }; - bc->setBuildDirectory(makeUniquelyNumbered(bc->buildDirectory(), isBuildDirOk)); + const FilePath buildDirectory = bc->buildDirectory(); + if (buildDirectory != m_target->project()->projectDirectory()) { + const std::function isBuildDirOk = [this](const FilePath &candidate) { + if (candidate.exists()) + return false; + return !anyOf(m_target->buildConfigurations(), [&candidate](const BuildConfiguration *bc) { + return bc->buildDirectory() == candidate; }); + }; + bc->setBuildDirectory(makeUniquelyNumbered(buildDirectory, isBuildDirOk)); + } m_target->addBuildConfiguration(bc); SessionManager::setActiveBuildConfiguration(m_target, bc, SetActive::Cascade); }