aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildstep.cpp14
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildstep.h2
2 files changed, 14 insertions, 2 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
index 678e4f15f0..4ac5f4721e 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
+++ b/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
@@ -234,16 +234,26 @@ QVariantMap QbsBuildStep::toMap() const
void QbsBuildStep::buildingDone(bool success)
{
+ m_lastWasSuccess = success;
// Report errors:
foreach (const qbs::ErrorItem &item, m_job->error().items())
createTaskAndOutput(ProjectExplorer::Task::Error, item.description(),
item.codeLocation().fileName(), item.codeLocation().line());
+ QbsProject *pro = static_cast<QbsProject *>(project());
+ connect(pro, SIGNAL(projectParsingDone(bool)), this, SLOT(reparsingDone()));
+
// Building can uncover additional target artifacts.
- static_cast<QbsProject *>(project())->parseCurrentBuildConfiguration(true);
+ // Wait for reparsing to finish, since before that our run configurations may not be valid.
+ pro->parseCurrentBuildConfiguration(true);
+}
+void QbsBuildStep::reparsingDone()
+{
+ disconnect(static_cast<QbsProject *>(project()), SIGNAL(projectParsingDone(bool)),
+ this, SLOT(reparsingDone()));
QTC_ASSERT(m_fi, return);
- m_fi->reportResult(success);
+ m_fi->reportResult(m_lastWasSuccess);
m_fi = 0; // do not delete, it is not ours
m_job->deleteLater();
m_job = 0;
diff --git a/src/plugins/qbsprojectmanager/qbsbuildstep.h b/src/plugins/qbsprojectmanager/qbsbuildstep.h
index 3b6ceb77c2..9c576b7a46 100644
--- a/src/plugins/qbsprojectmanager/qbsbuildstep.h
+++ b/src/plugins/qbsprojectmanager/qbsbuildstep.h
@@ -80,6 +80,7 @@ signals:
private slots:
void buildingDone(bool success);
+ void reparsingDone();
void handleTaskStarted(const QString &desciption, int max);
void handleProgress(int value);
void handleCommandDescriptionReport(const QString &highlight, const QString &message);
@@ -108,6 +109,7 @@ private:
QFutureInterface<bool> *m_fi;
qbs::BuildJob *m_job;
int m_progressBase;
+ bool m_lastWasSuccess;
ProjectExplorer::IOutputParser *m_parser;
friend class QbsBuildStepConfigWidget;