diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp index 25d454ca763..5af16f3e4f7 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp @@ -402,6 +402,24 @@ QList AutotoolsProject::nodes(FolderNode *parent) const return list; } +static QStringList filterIncludes(const QString &absSrc, const QString &absBuild, + const QStringList &in) +{ + QStringList result; + foreach (const QString i, in) { + QString out = i; + out.replace(QLatin1String("$(top_srcdir)"), absSrc); + out.replace(QLatin1String("$(abs_top_srcdir)"), absSrc); + + out.replace(QLatin1String("$(top_builddir)"), absBuild); + out.replace(QLatin1String("$(abs_top_builddir)"), absBuild); + + result << out; + } + + return result; +} + void AutotoolsProject::updateCppCodeModel() { CppTools::CppModelManager *modelManager = CppTools::CppModelManager::instance(); @@ -427,7 +445,12 @@ void AutotoolsProject::updateCppCodeModel() ppBuilder.setCFlags(cflags); ppBuilder.setCxxFlags(cxxflags); - ppBuilder.setIncludePaths(m_makefileParserThread->includePaths()); + const QString absSrc = projectDirectory().toString(); + const Target *target = activeTarget(); + const QString absBuild = (target && target->activeBuildConfiguration()) + ? target->activeBuildConfiguration()->buildDirectory().toString() : QString(); + + ppBuilder.setIncludePaths(filterIncludes(absSrc, absBuild, m_makefileParserThread->includePaths())); ppBuilder.setDefines(m_makefileParserThread->defines()); const QList languages = ppBuilder.createProjectPartsForFiles(m_files);