aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qbsprojectmanager/qbsbuildstep.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qbsprojectmanager/qbsbuildstep.cpp')
-rw-r--r--src/plugins/qbsprojectmanager/qbsbuildstep.cpp14
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;