diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index 6da02f7d3a1..7e92932d204 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp +++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp @@ -347,25 +347,12 @@ QVector BuildDirManager::takeProjectFilesToWatch() Utils::FilePath sourceDir = m_parameters.sourceDirectory; Utils::FilePath buildDir = m_parameters.workDirectory; - const QVector toWatch = Utils::filtered(m_reader->takeProjectFilesToWatch(), - [&sourceDir, - &buildDir](const Utils::FilePath &p) { - return p.isChildOf(sourceDir) - || p.isChildOf(buildDir); - }); - - if (!toWatch.isEmpty()) { - connect(project(), &Project::projectFileIsDirty, this, [this]() { - if (m_parameters.cmakeTool() && m_parameters.cmakeTool()->isAutoRun()) { - updateReparseParameters(REPARSE_DEFAULT); - emit requestReparse(); - } - }); - } else { - disconnect(project(), nullptr, this, nullptr); - } - - return toWatch; + return Utils::filtered(m_reader->takeProjectFilesToWatch(), + [&sourceDir, + &buildDir](const Utils::FilePath &p) { + return p.isChildOf(sourceDir) + || p.isChildOf(buildDir); + }); } std::unique_ptr BuildDirManager::generateProjectTree( diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index dea0fa37f2a..95ba123d5b9 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -170,6 +170,14 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *parent, Core::Id id) BuildDirManager::REPARSE_FORCE_CONFIGURATION); } }); + + connect(parent->project(), &Project::projectFileIsDirty, this, [this]() { + if (isActive()) { + m_buildDirManager + .setParametersAndRequestParse(BuildDirParameters(this), + BuildDirManager::REPARSE_DEFAULT); + } + }); } void CMakeBuildConfiguration::initialize()