diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index 68a7ceb6847..f17e356509d 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp +++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp @@ -298,11 +298,11 @@ void BuildDirManager::generateProjectTree(CMakeProjectNode *root, const QListgenerateProjectTree(root, allFiles); } -void BuildDirManager::updateCodeModel(CppTools::RawProjectParts &rpps) +CppTools::RawProjectParts BuildDirManager::createRawProjectParts() const { - QTC_ASSERT(!m_isHandlingError, return); - QTC_ASSERT(m_reader, return); - return m_reader->updateCodeModel(rpps); + QTC_ASSERT(!m_isHandlingError, return {}); + QTC_ASSERT(m_reader, return {}); + return m_reader->createRawProjectParts(); } void BuildDirManager::clearCache() diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.h b/src/plugins/cmakeprojectmanager/builddirmanager.h index 58fe11484cc..d55e05aed2c 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.h +++ b/src/plugins/cmakeprojectmanager/builddirmanager.h @@ -76,7 +76,7 @@ public: void generateProjectTree(CMakeProjectNode *root, const QList &allFiles) const; - void updateCodeModel(CppTools::RawProjectParts &rpps); + CppTools::RawProjectParts createRawProjectParts() const; QList takeBuildTargets() const; CMakeConfig takeCMakeConfiguration() const; diff --git a/src/plugins/cmakeprojectmanager/builddirreader.h b/src/plugins/cmakeprojectmanager/builddirreader.h index e10109701d7..3e600cfe398 100644 --- a/src/plugins/cmakeprojectmanager/builddirreader.h +++ b/src/plugins/cmakeprojectmanager/builddirreader.h @@ -67,7 +67,7 @@ public: virtual CMakeConfig takeParsedConfiguration() = 0; virtual void generateProjectTree(CMakeProjectNode *root, const QList &allFiles) = 0; - virtual void updateCodeModel(CppTools::RawProjectParts &rpps) = 0; + virtual CppTools::RawProjectParts createRawProjectParts() const = 0; signals: void isReadyNow() const; diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index b8c5e3ffcda..9865c93c794 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -285,8 +285,7 @@ void CMakeProject::updateProjectData(CMakeBuildConfiguration *bc) QtSupport::CppKitInfo kitInfo(this); QTC_ASSERT(kitInfo.isValid(), return); - CppTools::RawProjectParts rpps; - m_buildDirManager.updateCodeModel(rpps); + CppTools::RawProjectParts rpps = m_buildDirManager.createRawProjectParts(); for (CppTools::RawProjectPart &rpp : rpps) { rpp.setQtVersion(kitInfo.projectPartQtVersion); // TODO: Check if project actually uses Qt. diff --git a/src/plugins/cmakeprojectmanager/servermodereader.cpp b/src/plugins/cmakeprojectmanager/servermodereader.cpp index d022443b21b..9b293d0ff83 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.cpp +++ b/src/plugins/cmakeprojectmanager/servermodereader.cpp @@ -356,8 +356,10 @@ void ServerModeReader::generateProjectTree(CMakeProjectNode *root, std::move(cmakeFilesOther)); } -void ServerModeReader::updateCodeModel(CppTools::RawProjectParts &rpps) +CppTools::RawProjectParts ServerModeReader::createRawProjectParts() const { + CppTools::RawProjectParts rpps; + int counter = 0; for (const FileGroup *fg : qAsConst(m_fileGroups)) { // CMake users worked around Creator's inability of listing header files by creating @@ -399,6 +401,8 @@ void ServerModeReader::updateCodeModel(CppTools::RawProjectParts &rpps) : CppTools::ProjectPart::Library); rpps.append(rpp); } + + return rpps; } void ServerModeReader::handleReply(const QVariantMap &data, const QString &inReplyTo) diff --git a/src/plugins/cmakeprojectmanager/servermodereader.h b/src/plugins/cmakeprojectmanager/servermodereader.h index 9c29f2dcca2..a8e998c68c9 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.h +++ b/src/plugins/cmakeprojectmanager/servermodereader.h @@ -60,7 +60,7 @@ public: CMakeConfig takeParsedConfiguration() final; void generateProjectTree(CMakeProjectNode *root, const QList &allFiles) final; - void updateCodeModel(CppTools::RawProjectParts &rpps) final; + CppTools::RawProjectParts createRawProjectParts() const final; private: void handleReply(const QVariantMap &data, const QString &inReplyTo); diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.cpp b/src/plugins/cmakeprojectmanager/tealeafreader.cpp index 62f3753db40..320b470e454 100644 --- a/src/plugins/cmakeprojectmanager/tealeafreader.cpp +++ b/src/plugins/cmakeprojectmanager/tealeafreader.cpp @@ -342,12 +342,13 @@ static void processCMakeIncludes(const CMakeBuildTarget &cbt, const ToolChain *t } } -void TeaLeafReader::updateCodeModel(CppTools::RawProjectParts &rpps) +CppTools::RawProjectParts TeaLeafReader::createRawProjectParts() const { const ToolChain *tcCxx = ToolChainManager::findToolChain(m_parameters.cxxToolChainId); const ToolChain *tcC = ToolChainManager::findToolChain(m_parameters.cToolChainId); const FileName sysroot = m_parameters.sysRoot; + CppTools::RawProjectParts rpps; QHash targetDataCacheCxx; QHash targetDataCacheC; foreach (const CMakeBuildTarget &cbt, m_buildTargets) { @@ -390,6 +391,8 @@ void TeaLeafReader::updateCodeModel(CppTools::RawProjectParts &rpps) : CppTools::ProjectPart::Library); rpps.append(rpp); } + + return rpps; } void TeaLeafReader::cleanUpProcess() @@ -575,7 +578,7 @@ void TeaLeafReader::processCMakeError() QStringList TeaLeafReader::getFlagsFor(const CMakeBuildTarget &buildTarget, QHash &cache, - Id lang) + Id lang) const { // check cache: auto it = cache.constFind(buildTarget.title); @@ -594,7 +597,7 @@ QStringList TeaLeafReader::getFlagsFor(const CMakeBuildTarget &buildTarget, bool TeaLeafReader::extractFlagsFromMake(const CMakeBuildTarget &buildTarget, QHash &cache, - Id lang) + Id lang) const { QString flagsPrefix; @@ -649,7 +652,7 @@ bool TeaLeafReader::extractFlagsFromMake(const CMakeBuildTarget &buildTarget, bool TeaLeafReader::extractFlagsFromNinja(const CMakeBuildTarget &buildTarget, QHash &cache, - Id lang) + Id lang) const { Q_UNUSED(buildTarget) if (!cache.isEmpty()) // We fill the cache in one go! @@ -667,7 +670,7 @@ bool TeaLeafReader::extractFlagsFromNinja(const CMakeBuildTarget &buildTarget, // found // Get "all" target's working directory QByteArray ninjaFile; - QString buildNinjaFile = takeBuildTargets().at(0).workingDirectory.toString(); + QString buildNinjaFile = m_buildTargets.at(0).workingDirectory.toString(); buildNinjaFile += "/build.ninja"; QFile buildNinja(buildNinjaFile); if (buildNinja.exists()) { diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.h b/src/plugins/cmakeprojectmanager/tealeafreader.h index df3ec8e59d0..142ea4b5afb 100644 --- a/src/plugins/cmakeprojectmanager/tealeafreader.h +++ b/src/plugins/cmakeprojectmanager/tealeafreader.h @@ -57,7 +57,7 @@ public: CMakeConfig takeParsedConfiguration() final; void generateProjectTree(CMakeProjectNode *root, const QList &allFiles) final; - void updateCodeModel(CppTools::RawProjectParts &rpps) final; + CppTools::RawProjectParts createRawProjectParts() const final; private: void cleanUpProcess(); @@ -69,9 +69,9 @@ private: void processCMakeOutput(); void processCMakeError(); - QStringList getFlagsFor(const CMakeBuildTarget &buildTarget, QHash &cache, Core::Id lang); - bool extractFlagsFromMake(const CMakeBuildTarget &buildTarget, QHash &cache, Core::Id lang); - bool extractFlagsFromNinja(const CMakeBuildTarget &buildTarget, QHash &cache, Core::Id lang); + QStringList getFlagsFor(const CMakeBuildTarget &buildTarget, QHash &cache, Core::Id lang) const; + bool extractFlagsFromMake(const CMakeBuildTarget &buildTarget, QHash &cache, Core::Id lang) const; + bool extractFlagsFromNinja(const CMakeBuildTarget &buildTarget, QHash &cache, Core::Id lang) const; Utils::QtcProcess *m_cmakeProcess = nullptr;