diff options
Diffstat (limited to 'src/plugins/qbsprojectmanager/qbsbuildstep.cpp')
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsbuildstep.cpp | 14 |
1 files changed, 12 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; |