forked from qt-creator/qt-creator
ProjectExplorer: Use different build dir when copying build config
...into another target. Using the same build directory in two different targets will likely lead to errors. Fixes: QTCREATORBUG-23462 Change-Id: I7daa510b3128a344adb51772d44a79415419acc3 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -33,6 +33,7 @@
|
|||||||
#include "kit.h"
|
#include "kit.h"
|
||||||
#include "makestep.h"
|
#include "makestep.h"
|
||||||
#include "projectexplorer.h"
|
#include "projectexplorer.h"
|
||||||
|
#include "projectmacroexpander.h"
|
||||||
#include "projectnodes.h"
|
#include "projectnodes.h"
|
||||||
#include "runconfiguration.h"
|
#include "runconfiguration.h"
|
||||||
#include "runcontrol.h"
|
#include "runcontrol.h"
|
||||||
@@ -405,13 +406,19 @@ bool Project::copySteps(Target *sourceTarget, Target *newTarget)
|
|||||||
QStringList deployconfigurationError;
|
QStringList deployconfigurationError;
|
||||||
QStringList runconfigurationError;
|
QStringList runconfigurationError;
|
||||||
|
|
||||||
|
const Project * const project = newTarget->project();
|
||||||
foreach (BuildConfiguration *sourceBc, sourceTarget->buildConfigurations()) {
|
foreach (BuildConfiguration *sourceBc, sourceTarget->buildConfigurations()) {
|
||||||
|
ProjectMacroExpander expander(project->projectFilePath(), project->displayName(),
|
||||||
|
newTarget->kit(), sourceBc->displayName(),
|
||||||
|
sourceBc->buildType());
|
||||||
BuildConfiguration *newBc = BuildConfigurationFactory::clone(newTarget, sourceBc);
|
BuildConfiguration *newBc = BuildConfigurationFactory::clone(newTarget, sourceBc);
|
||||||
if (!newBc) {
|
if (!newBc) {
|
||||||
buildconfigurationError << sourceBc->displayName();
|
buildconfigurationError << sourceBc->displayName();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
newBc->setDisplayName(sourceBc->displayName());
|
newBc->setDisplayName(sourceBc->displayName());
|
||||||
|
newBc->setBuildDirectory(project->projectDirectory()
|
||||||
|
.resolvePath(expander.expand(ProjectExplorerPlugin::buildDirectoryTemplate())));
|
||||||
newTarget->addBuildConfiguration(newBc);
|
newTarget->addBuildConfiguration(newBc);
|
||||||
if (sourceTarget->activeBuildConfiguration() == sourceBc)
|
if (sourceTarget->activeBuildConfiguration() == sourceBc)
|
||||||
SessionManager::setActiveBuildConfiguration(newTarget, newBc, SetActive::NoCascade);
|
SessionManager::setActiveBuildConfiguration(newTarget, newBc, SetActive::NoCascade);
|
||||||
|
Reference in New Issue
Block a user