diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index 28b73b3616d52889ab61d52756fca0efd830f078..d19792f49f08036799a12f89ae6eba7d6d5355d2 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -875,12 +875,16 @@ void CMakeCbpParser::sortFiles()
         } else {
             int bestLength = -1;
             int bestIndex = -1;
+            int bestIncludeCount = -1;
 
             for (int i = 0; i < m_buildTargets.size(); ++i) {
                 const CMakeBuildTarget &target = m_buildTargets.at(i);
-                if (fileName.isChildOf(Utils::FileName::fromString(target.sourceDirectory))
-                                       && target.sourceDirectory.size() > bestLength) {
+                if (fileName.isChildOf(Utils::FileName::fromString(target.sourceDirectory)) &&
+                    (target.sourceDirectory.size() > bestLength ||
+                     (target.sourceDirectory.size() == bestLength &&
+                      target.includeFiles.count() > bestIncludeCount))) {
                     bestLength = target.sourceDirectory.size();
+                    bestIncludeCount = target.includeFiles.count();
                     bestIndex = i;
                 }
             }