diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2018-04-16 15:57:20 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-04-17 14:14:24 +0000 |
commit | c6cd9e8fbe9edd23fdbea859b6fc604b4e7d22b3 (patch) | |
tree | b1f0fe2d4d0d5dd20ab0fcf95a88e0ddc5e00fba /src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp | |
parent | 780d4c6a434c84c7bfdd6b2cf0020891481f7b76 (diff) |
Qbs run config: Run executable from installed location, if possible
It's been like that for a long time, but the behavior was inadvertantly
changed in a recent refactoring.
Change-Id: I2f301c995c1f9bb235718e02326c4c64dea91694
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp')
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp index 13441da885..64b6436818 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp @@ -31,6 +31,7 @@ #include <coreplugin/variablechooser.h> +#include <projectexplorer/deploymentdata.h> #include <projectexplorer/localenvironmentaspect.h> #include <projectexplorer/project.h> #include <projectexplorer/runconfigurationaspects.h> @@ -165,11 +166,22 @@ void QbsRunConfiguration::addToBaseEnvironment(Utils::Environment &env) const m_envCache.insert(key, env); } +Utils::FileName QbsRunConfiguration::executableToRun(const BuildTargetInfo &targetInfo) const +{ + const FileName appInBuildDir = targetInfo.targetFilePath; + if (target()->deploymentData().localInstallRoot().isEmpty()) + return appInBuildDir; + const QString deployedAppFilePath = target()->deploymentData() + .deployableForLocalFile(appInBuildDir.toString()).remoteFilePath(); + const FileName appInLocalInstallDir = target()->deploymentData().localInstallRoot() + + deployedAppFilePath; + return appInLocalInstallDir.exists() ? appInLocalInstallDir : appInBuildDir; +} + void QbsRunConfiguration::updateTargetInformation() { BuildTargetInfo bti = target()->applicationTargets().buildTargetInfo(buildKey()); - FileName executable = bti.targetFilePath; - + const FileName executable = executableToRun(bti); auto terminalAspect = extraAspect<TerminalAspect>(); if (!terminalAspect->isUserSet()) terminalAspect->setUseTerminal(bti.usesTerminal); |