diff options
author | Tobias Hunger <tobias.hunger@gmail.com> | 2015-07-09 01:28:04 +0200 |
---|---|---|
committer | hjk <hjk@theqtcompany.com> | 2015-07-09 14:18:18 +0000 |
commit | 2f017c071edd35dd19cfb8c2d49c70b99a50760e (patch) | |
tree | 6ca1fb21194603826b2773eceb3bfc7cd32785d6 /src/plugins/autotoolsprojectmanager | |
parent | 7901601eb0d03cba1d665e05dd4bf7a580b2a963 (diff) | |
download | qt-creator-2f017c071edd35dd19cfb8c2d49c70b99a50760e.tar.gz |
AutoTools: Handle (abs_)?top_srcdir, and (abs_)?top_builddir
in include paths taken from the Autotools project.
These are widely used in include paths.
Change-Id: I78d5e1f6ce6cd7bfe92bb670b73e276cb558b9eb
Reviewed-by: hjk <hjk@theqtcompany.com>
Diffstat (limited to 'src/plugins/autotoolsprojectmanager')
-rw-r--r-- | src/plugins/autotoolsprojectmanager/autotoolsproject.cpp | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp index 25d454ca76..5af16f3e4f 100644 --- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp +++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp @@ -402,6 +402,24 @@ QList<Node *> 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<Core::Id> languages = ppBuilder.createProjectPartsForFiles(m_files); |