diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index aae70be115996040407ac2f27dc1203d37eff699..670c2d57cfc66c24c54c90fd54d437fd2dcd5a4f 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -228,12 +228,18 @@ bool CMakeProject::parseCMakeLists()
         CppTools::CppModelManagerInterface *modelmanager = ExtensionSystem::PluginManager::instance()->getObject<CppTools::CppModelManagerInterface>();
         if (modelmanager) {
             CppTools::CppModelManagerInterface::ProjectInfo pinfo = modelmanager->projectInfo(this);
-            pinfo.includePaths = allIncludePaths;
-            // TODO we only want C++ files, not all other stuff that might be in the project
-            pinfo.sourceFiles = m_files;
-            pinfo.defines = m_toolChain->predefinedMacros(); // TODO this is to simplistic
-            pinfo.frameworkPaths = allFrameworkPaths;
-            modelmanager->updateProjectInfo(pinfo);
+            if (pinfo.includePaths != allIncludePaths
+                || pinfo.sourceFiles != m_files
+                || pinfo.defines != m_toolChain->predefinedMacros()
+                || pinfo.frameworkPaths != allFrameworkPaths)  {
+                pinfo.includePaths = allIncludePaths;
+                // TODO we only want C++ files, not all other stuff that might be in the project
+                pinfo.sourceFiles = m_files;
+                pinfo.defines = m_toolChain->predefinedMacros(); // TODO this is to simplistic
+                pinfo.frameworkPaths = allFrameworkPaths;
+                modelmanager->updateProjectInfo(pinfo);
+                modelmanager->updateSourceFiles(pinfo.sourceFiles);
+            }
         }
 
         // Create run configurations for m_targets