aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/autotest/testtreemodel.cpp3
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp2
-rw-r--r--src/plugins/debugger/logwindow.cpp4
-rw-r--r--src/plugins/projectexplorer/abiwidget.cpp5
-rw-r--r--src/plugins/projectexplorer/deploymentdata.cpp11
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.cpp10
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.h2
-rw-r--r--src/plugins/projectexplorer/target.cpp1
-rw-r--r--src/plugins/qbsprojectmanager/qbsproject.cpp10
9 files changed, 42 insertions, 6 deletions
diff --git a/src/plugins/autotest/testtreemodel.cpp b/src/plugins/autotest/testtreemodel.cpp
index 1520dcd6f2..b4f3e06d89 100644
--- a/src/plugins/autotest/testtreemodel.cpp
+++ b/src/plugins/autotest/testtreemodel.cpp
@@ -181,7 +181,8 @@ QList<TestTreeItem *> TestTreeModel::testItemsByName(TestTreeItem *root, const Q
}
TestTreeItem *testCase = node->findFirstLevelChild([&testName](TestTreeItem *it) {
QTC_ASSERT(it, return false);
- return it->type() == TestTreeItem::TestFunction && it->name() == testName;
+ return (it->type() == TestTreeItem::TestCase
+ || it->type() == TestTreeItem::TestFunction) && it->name() == testName;
}); // collect only actual tests, not special functions like init, cleanup etc.
if (testCase)
result << testCase;
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
index ed919f8255..ba698b9d70 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
@@ -327,7 +327,7 @@ DeploymentData CMakeBuildConfiguration::deploymentData() const
for (const CMakeBuildTarget &ct : m_buildTargets) {
if (ct.targetType == ExecutableType || ct.targetType == DynamicLibraryType) {
if (!ct.executable.isEmpty()
- && !result.deployableForLocalFile(ct.executable).isValid()) {
+ && result.deployableForLocalFile(ct.executable).localFilePath() != ct.executable) {
result.addFile(ct.executable.toString(),
deploymentPrefix + buildDir.relativeFilePath(ct.executable.toFileInfo().dir().path()),
DeployableFile::TypeExecutable);
diff --git a/src/plugins/debugger/logwindow.cpp b/src/plugins/debugger/logwindow.cpp
index d50ca6e96c..be869585a5 100644
--- a/src/plugins/debugger/logwindow.cpp
+++ b/src/plugins/debugger/logwindow.cpp
@@ -567,7 +567,8 @@ void LogWindow::doOutput()
if (m_queuedOutput.isEmpty())
return;
- theGlobalLog->doOutput(m_queuedOutput);
+ if (theGlobalLog)
+ theGlobalLog->doOutput(m_queuedOutput);
QTextCursor cursor = m_combinedText->textCursor();
const bool atEnd = cursor.atEnd();
@@ -706,6 +707,7 @@ GlobalLogWindow::GlobalLogWindow()
GlobalLogWindow::~GlobalLogWindow()
{
+ theGlobalLog = nullptr;
}
void GlobalLogWindow::doOutput(const QString &output)
diff --git a/src/plugins/projectexplorer/abiwidget.cpp b/src/plugins/projectexplorer/abiwidget.cpp
index 8171ec03d5..d4bb9ccd5f 100644
--- a/src/plugins/projectexplorer/abiwidget.cpp
+++ b/src/plugins/projectexplorer/abiwidget.cpp
@@ -188,7 +188,10 @@ void AbiWidget::setAbis(const Abis &abiList, const Abi &currentAbi)
setCustomAbiComboBoxes(defaultAbi);
}
- emitAbiChanged(defaultAbi);
+
+ // Update disabled state according to new automatically selected item in main ABI combobox.
+ // This will call emitAbiChanged with the actual selected ABI.
+ mainComboBoxChanged();
}
Abis AbiWidget::supportedAbis() const
diff --git a/src/plugins/projectexplorer/deploymentdata.cpp b/src/plugins/projectexplorer/deploymentdata.cpp
index 98d43692b6..816a311d70 100644
--- a/src/plugins/projectexplorer/deploymentdata.cpp
+++ b/src/plugins/projectexplorer/deploymentdata.cpp
@@ -57,8 +57,15 @@ void DeploymentData::addFile(const QString &localFilePath, const QString &remote
DeployableFile DeploymentData::deployableForLocalFile(const Utils::FilePath &localFilePath) const
{
- return Utils::findOrDefault(m_files,
- Utils::equal(&DeployableFile::localFilePath, localFilePath));
+ const DeployableFile f = Utils::findOrDefault(m_files,
+ Utils::equal(&DeployableFile::localFilePath,
+ localFilePath));
+ if (f.isValid())
+ return f;
+ const QString localFileName = localFilePath.fileName();
+ return Utils::findOrDefault(m_files, [&localFileName](const DeployableFile &d) {
+ return d.localFilePath().fileName() == localFileName;
+ });
}
bool DeploymentData::operator==(const DeploymentData &other) const
diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp
index c90799a5e0..48c5b22871 100644
--- a/src/plugins/projectexplorer/msvctoolchain.cpp
+++ b/src/plugins/projectexplorer/msvctoolchain.cpp
@@ -776,6 +776,8 @@ void MsvcToolChain::updateEnvironmentModifications(Utils::EnvironmentItems modif
void MsvcToolChain::detectInstalledAbis()
{
+ if (!m_supportedAbis.isEmpty()) // Build Tools 2015
+ return;
static QMap<QString, Abis> abiCache;
const QString vcVarsBase
= QDir::fromNativeSeparators(m_vcvarsBat).left(m_vcvarsBat.lastIndexOf('/'));
@@ -1251,6 +1253,13 @@ void MsvcToolChain::resetVarsBat()
m_varsBatArg.clear();
}
+void MsvcToolChain::setSupportedAbi(const Abi &abi)
+{
+ // Hack for Build Tools 2015 only.
+ QTC_CHECK(m_supportedAbis.isEmpty());
+ m_supportedAbis = { abi };
+}
+
// --------------------------------------------------------------------------
// MsvcBasedToolChainConfigWidget: Creates a simple GUI without error label
// to display name and varsBat. Derived classes should add the error label and
@@ -1855,6 +1864,7 @@ static void detectCppBuildTools2015(QList<ToolChain *> *list)
tc->setDisplayName(name + QLatin1String(e.postFix));
tc->setDetection(ToolChain::AutoDetection);
tc->setLanguage(language);
+ tc->setSupportedAbi(abi);
list->append(tc);
}
}
diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h
index 80d8db723c..79a3db4884 100644
--- a/src/plugins/projectexplorer/msvctoolchain.h
+++ b/src/plugins/projectexplorer/msvctoolchain.h
@@ -95,6 +95,8 @@ public:
void setupVarsBat(const Abi &abi, const QString &varsBat, const QString &varsBatArg);
void resetVarsBat();
+ void setSupportedAbi(const Abi &abi);
+
bool operator==(const ToolChain &) const override;
bool isJobCountSupported() const override { return false; }
diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp
index d0e6f56c90..b9f92741d2 100644
--- a/src/plugins/projectexplorer/target.cpp
+++ b/src/plugins/projectexplorer/target.cpp
@@ -359,6 +359,7 @@ void Target::setDeploymentData(const DeploymentData &deploymentData)
if (d->m_deploymentData != deploymentData) {
d->m_deploymentData = deploymentData;
emit deploymentDataChanged();
+ emit applicationTargetsChanged();
}
}
diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp
index 341a58d8f8..3ee40859a3 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.cpp
+++ b/src/plugins/qbsprojectmanager/qbsproject.cpp
@@ -27,6 +27,7 @@
#include "qbsbuildconfiguration.h"
#include "qbsbuildstep.h"
+#include "qbsinstallstep.h"
#include "qbslogsink.h"
#include "qbspmlogging.h"
#include "qbsprojectimporter.h"
@@ -52,6 +53,7 @@
#include <projectexplorer/buildinfo.h>
#include <projectexplorer/buildmanager.h>
#include <projectexplorer/buildtargetinfo.h>
+#include <projectexplorer/deployconfiguration.h>
#include <projectexplorer/deploymentdata.h>
#include <projectexplorer/headerpath.h>
#include <projectexplorer/kit.h>
@@ -464,6 +466,14 @@ FilePath QbsProject::installRoot()
{
if (!activeTarget())
return FilePath();
+ const auto dc = activeTarget()->activeDeployConfiguration();
+ if (dc) {
+ const QList<QbsInstallStep *> qbsInstallSteps = dc->stepList()->allOfType<QbsInstallStep>();
+ for (QbsInstallStep * const step : qbsInstallSteps) {
+ if (step->enabled())
+ return FilePath::fromString(step->installRoot());
+ }
+ }
const auto * const bc
= qobject_cast<QbsBuildConfiguration *>(activeTarget()->activeBuildConfiguration());
if (!bc)