diff options
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsbuildstep.cpp | 14 | ||||
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsbuildstep.h | 2 |
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; |