diff --git a/src/plugins/cpptools/cppprojectinfogenerator.cpp b/src/plugins/cpptools/cppprojectinfogenerator.cpp index cee90c36bba..89c7d7a2aae 100644 --- a/src/plugins/cpptools/cppprojectinfogenerator.cpp +++ b/src/plugins/cpptools/cppprojectinfogenerator.cpp @@ -35,6 +35,8 @@ #include +#include + using namespace ProjectExplorer; namespace CppTools { @@ -94,7 +96,15 @@ static ProjectPart::Ptr projectPartFromRawProjectPart( part->projectMacros = rawProjectPart.projectMacros; if (!part->projectConfigFile.isEmpty()) part->projectMacros += Macro::toMacros(ProjectPart::readProjectConfigFile(part)); - part->headerPaths = rawProjectPart.headerPaths; + + // Prevent duplicate include paths. + std::set seenPaths; + for (const HeaderPath &p : qAsConst(rawProjectPart.headerPaths)) { + const QString cleanPath = QDir::cleanPath(p.path); + if (seenPaths.insert(cleanPath).second) + part->headerPaths << HeaderPath(cleanPath, p.type); + } + part->precompiledHeaders = rawProjectPart.precompiledHeaders; part->selectedForBuilding = rawProjectPart.selectedForBuilding;