From bd660aaf27e131c069fb779db556a962c067fdf4 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 8 May 2023 13:37:07 +0200 Subject: [PATCH] CMake: Fix setting additional project files for file watching Amends d8be2491a5f5cfdc512f63c766a550dd43694063 The change above introduced FileApiReader::takeCMakeFileInfos and uses it to move the information about additional CMake files out of the FileApiReader. But that now emptied variable was later used to inform the project about these additional files. So, that broke the automatic running of CMake when project files (except the toplevel one) changes. Instead use the list of additional files that now lives in the CMakeBuildSystem for that purpose. Change-Id: I1062593029880af9d4c70e72e1bd101d40ad0c00 Reviewed-by: Cristian Adam --- src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp | 11 ++++++++++- src/plugins/cmakeprojectmanager/fileapireader.cpp | 8 -------- src/plugins/cmakeprojectmanager/fileapireader.h | 1 - 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index 20c85133216..aaad00ed4bd 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -872,13 +872,22 @@ void CMakeBuildSystem::checkAndReportError(QString &errorMessage) } } +static QSet projectFilesToWatch(const QSet &cmakeFiles) +{ + return Utils::transform(Utils::filtered(cmakeFiles, + [](const CMakeFileInfo &info) { + return !info.isGenerated; + }), + [](const CMakeFileInfo &info) { return info.path; }); +} + void CMakeBuildSystem::updateProjectData() { qCDebug(cmakeBuildSystemLog) << "Updating CMake project data"; QTC_ASSERT(m_treeScanner.isFinished() && !m_reader.isParsing(), return ); - buildConfiguration()->project()->setExtraProjectFiles(m_reader.projectFilesToWatch()); + buildConfiguration()->project()->setExtraProjectFiles(projectFilesToWatch(m_cmakeFiles)); CMakeConfig patchedConfig = configurationFromCMake(); { diff --git a/src/plugins/cmakeprojectmanager/fileapireader.cpp b/src/plugins/cmakeprojectmanager/fileapireader.cpp index 0ed163021cf..fd507f7bf71 100644 --- a/src/plugins/cmakeprojectmanager/fileapireader.cpp +++ b/src/plugins/cmakeprojectmanager/fileapireader.cpp @@ -165,14 +165,6 @@ bool FileApiReader::isParsing() const return m_isParsing; } -QSet FileApiReader::projectFilesToWatch() const -{ - return Utils::transform( - Utils::filtered(m_cmakeFiles, - [](const CMakeFileInfo &info) { return !info.isGenerated; }), - [](const CMakeFileInfo &info) { return info.path;}); -} - QList FileApiReader::takeBuildTargets(QString &errorMessage){ Q_UNUSED(errorMessage) diff --git a/src/plugins/cmakeprojectmanager/fileapireader.h b/src/plugins/cmakeprojectmanager/fileapireader.h index cb90af8477d..115d22ea71a 100644 --- a/src/plugins/cmakeprojectmanager/fileapireader.h +++ b/src/plugins/cmakeprojectmanager/fileapireader.h @@ -44,7 +44,6 @@ public: bool isParsing() const; - QSet projectFilesToWatch() const; QList takeBuildTargets(QString &errorMessage); QSet takeCMakeFileInfos(QString &errorMessage); CMakeConfig takeParsedConfiguration(QString &errorMessage);