aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2019-08-30 12:00:57 +0200
committerhjk <hjk@qt.io>2019-09-24 11:20:51 +0000
commitbcaeb73e68b1880848252c634626c57bd6f18221 (patch)
tree26e787ddc7084d97c94470ad133b08223353223b
parentbef986f3fde6a591734c7b2eedc76a036d854bde (diff)
ProjectExplorer: Store parts of active build config in runcontrol
... on runcontrol creation to prevent later access. Adapt some users. There are more to come. Change-Id: I2a3fe5eea0ada4eff7d08b79a6f49694e6962c8a Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
-rw-r--r--src/plugins/android/androiddebugsupport.cpp5
-rw-r--r--src/plugins/clangtools/clangtoolruncontrol.cpp6
-rw-r--r--src/plugins/projectexplorer/runcontrol.cpp24
-rw-r--r--src/plugins/projectexplorer/runcontrol.h4
-rw-r--r--src/plugins/winrt/winrtrunnerhelper.cpp5
-rw-r--r--src/plugins/winrt/winrtrunnerhelper.h1
6 files changed, 32 insertions, 13 deletions
diff --git a/src/plugins/android/androiddebugsupport.cpp b/src/plugins/android/androiddebugsupport.cpp
index 0481df89b23..dce03b052cb 100644
--- a/src/plugins/android/androiddebugsupport.cpp
+++ b/src/plugins/android/androiddebugsupport.cpp
@@ -35,7 +35,6 @@
#include <debugger/debuggerrunconfigurationaspect.h>
#include <debugger/debuggerruncontrol.h>
-#include <projectexplorer/buildconfiguration.h>
#include <projectexplorer/project.h>
#include <projectexplorer/projectnodes.h>
#include <projectexplorer/target.h>
@@ -139,11 +138,11 @@ void AndroidDebugSupport::start()
if (qtVersion)
solibSearchPath.append(qtVersion->qtSoPaths());
solibSearchPath.append(uniquePaths(extraLibs));
- solibSearchPath.append(target->activeBuildConfiguration()->buildDirectory().toString());
+ solibSearchPath.append(runControl()->buildDirectory().toString());
solibSearchPath.removeDuplicates();
setSolibSearchPath(solibSearchPath);
qCDebug(androidDebugSupportLog) << "SoLibSearchPath: "<<solibSearchPath;
- setSymbolFile(target->activeBuildConfiguration()->buildDirectory().pathAppended("app_process"));
+ setSymbolFile(runControl()->buildDirectory().pathAppended("app_process"));
setSkipExecutableValidation(true);
setUseExtendedRemote(true);
QString devicePreferredAbi = AndroidManager::devicePreferredAbi(target);
diff --git a/src/plugins/clangtools/clangtoolruncontrol.cpp b/src/plugins/clangtools/clangtoolruncontrol.cpp
index da8e9f053cb..dc22e7a39b6 100644
--- a/src/plugins/clangtools/clangtoolruncontrol.cpp
+++ b/src/plugins/clangtools/clangtoolruncontrol.cpp
@@ -136,11 +136,7 @@ private:
Target *target = runControl()->target();
QTC_ASSERT(target, reportFailure(); return);
- BuildConfiguration::BuildType buildType = BuildConfiguration::Unknown;
- if (const BuildConfiguration *buildConfig = target->activeBuildConfiguration())
- buildType = buildConfig->buildType();
-
- if (buildType == BuildConfiguration::Release) {
+ if (runControl()->buildType() == BuildConfiguration::Release) {
const QString wrongMode = ClangToolRunWorker::tr("Release");
const QString toolName = tool()->name();
const QString title = ClangToolRunWorker::tr("Run %1 in %2 Mode?").arg(toolName, wrongMode);
diff --git a/src/plugins/projectexplorer/runcontrol.cpp b/src/plugins/projectexplorer/runcontrol.cpp
index 4d32362fd07..b4a50d0099b 100644
--- a/src/plugins/projectexplorer/runcontrol.cpp
+++ b/src/plugins/projectexplorer/runcontrol.cpp
@@ -328,6 +328,9 @@ public:
QMap<Core::Id, QVariantMap> settingsData;
Core::Id runConfigId;
BuildTargetInfo buildTargetInfo;
+ BuildConfiguration::BuildType buildType = BuildConfiguration::Unknown;
+ FilePath buildDirectory;
+ Environment buildEnvironment;
Kit *kit = nullptr; // Not owned.
QPointer<Target> target; // Not owned.
QPointer<Project> project; // Not owned.
@@ -376,6 +379,12 @@ void RunControl::setTarget(Target *target)
if (!d->buildKey.isEmpty())
d->buildTargetInfo = target->buildTarget(d->buildKey);
+ if (auto bc = target->activeBuildConfiguration()) {
+ d->buildType = bc->buildType();
+ d->buildDirectory = bc->buildDirectory();
+ d->buildEnvironment = bc->environment();
+ }
+
delete d->outputFormatter;
d->outputFormatter = OutputFormatterFactory::createFormatter(target);
if (!d->outputFormatter)
@@ -907,6 +916,21 @@ QString RunControl::buildKey() const
return d->buildKey;
}
+BuildConfiguration::BuildType RunControl::buildType() const
+{
+ return d->buildType;
+}
+
+FilePath RunControl::buildDirectory() const
+{
+ return d->buildDirectory;
+}
+
+Environment RunControl::buildEnvironment() const
+{
+ return d->buildEnvironment;
+}
+
FilePath RunControl::targetFilePath() const
{
return d->buildTargetInfo.targetFilePath;
diff --git a/src/plugins/projectexplorer/runcontrol.h b/src/plugins/projectexplorer/runcontrol.h
index a9f55c1a243..1ad3e26b273 100644
--- a/src/plugins/projectexplorer/runcontrol.h
+++ b/src/plugins/projectexplorer/runcontrol.h
@@ -26,6 +26,7 @@
#pragma once
#include "applicationlauncher.h"
+#include "buildconfiguration.h"
#include "devicesupport/idevice.h"
#include "projectexplorerconstants.h"
#include "runconfiguration.h"
@@ -228,6 +229,9 @@ public:
}
QString buildKey() const;
+ BuildConfiguration::BuildType buildType() const;
+ Utils::FilePath buildDirectory() const;
+ Utils::Environment buildEnvironment() const;
QVariantMap settingsData(Core::Id id) const;
diff --git a/src/plugins/winrt/winrtrunnerhelper.cpp b/src/plugins/winrt/winrtrunnerhelper.cpp
index 69d718e5757..139929d44b1 100644
--- a/src/plugins/winrt/winrtrunnerhelper.cpp
+++ b/src/plugins/winrt/winrtrunnerhelper.cpp
@@ -98,9 +98,6 @@ WinRtRunnerHelper::WinRtRunnerHelper(ProjectExplorer::RunWorker *runWorker, QStr
m_loopbackArguments = QStringList{"--loopbackexempt", "client"};
else if (loopbackExemptServer)
m_loopbackArguments = QStringList{"--loopbackexempt", "server"};
-
- if (BuildConfiguration *bc = runControl->target()->activeBuildConfiguration())
- m_environment = bc->environment();
}
void WinRtRunnerHelper::appendMessage(const QString &message, Utils::OutputFormat format)
@@ -224,7 +221,7 @@ void WinRtRunnerHelper::startWinRtRunner(const RunConf &conf)
process->setUseCtrlCStub(true);
process->setCommand(cmdLine);
- process->setEnvironment(m_environment);
+ process->setEnvironment(m_worker->runControl()->buildEnvironment());
process->setWorkingDirectory(QFileInfo(m_executableFilePath).absolutePath());
process->start();
}
diff --git a/src/plugins/winrt/winrtrunnerhelper.h b/src/plugins/winrt/winrtrunnerhelper.h
index 785946e9853..5bbf7d4ddb8 100644
--- a/src/plugins/winrt/winrtrunnerhelper.h
+++ b/src/plugins/winrt/winrtrunnerhelper.h
@@ -71,7 +71,6 @@ private:
ProjectExplorer::RunWorker *m_worker = nullptr;
WinRtDevice::ConstPtr m_device;
- Utils::Environment m_environment;
QString m_runnerFilePath;
QString m_executableFilePath;
QString m_debuggerExecutable;