From c0b9565de7fae8d7be84e3764b864285fe7737d9 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Wed, 2 Mar 2016 13:04:48 +0100 Subject: [PATCH] QbsProject: updateCppCodeModel() after building for extra compilers We don't know the target files of extra compiler until we build the project. So, if we detect that situation when generating the code model, regenerate it after building the project the next time. Change-Id: I5dab9be2fcc14a11b01ecbc0d67f2d8e895c1b91 Reviewed-by: Tobias Hunger Reviewed-by: Christian Kandeler --- src/plugins/qbsprojectmanager/qbsproject.cpp | 12 ++++++++++-- src/plugins/qbsprojectmanager/qbsproject.h | 1 + 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 85bef4df1d4..97d2297d163 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -102,7 +102,8 @@ QbsProject::QbsProject(QbsManager *manager, const QString &fileName) : m_qbsUpdateFutureInterface(0), m_parsingScheduled(false), m_cancelStatus(CancelStatusNone), - m_currentBc(0) + m_currentBc(0), + m_extraCompilersPending(false) { m_parsingDelay.setInterval(1000); // delay parsing by 1s. @@ -575,6 +576,10 @@ void QbsProject::updateAfterBuild() m_projectData = m_qbsProject.projectData(); updateBuildTargetData(); updateCppCompilerCallData(); + if (m_extraCompilersPending) { + m_extraCompilersPending = false; + updateCppCodeModel(); + } } void QbsProject::registerQbsProjectParser(QbsProjectParser *p) @@ -798,8 +803,11 @@ void QbsProject::updateCppCodeModel() continue; QStringList generated = m_qbsProject.generatedFiles(prd, source.filePath(), false); - if (generated.isEmpty()) + if (generated.isEmpty()) { + // We don't know the target files until we build for the first time. + m_extraCompilersPending = true; continue; + } const FileNameList fileNames = Utils::transform(generated, [](const QString &s) { diff --git a/src/plugins/qbsprojectmanager/qbsproject.h b/src/plugins/qbsprojectmanager/qbsproject.h index 72c3e7502e3..5ad9ecff053 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.h +++ b/src/plugins/qbsprojectmanager/qbsproject.h @@ -166,6 +166,7 @@ private: QTimer m_parsingDelay; QList m_extraCompilers; + bool m_extraCompilersPending; }; } // namespace Internal