From 888ea6bbbb0f4c6bb6b5616046e600b9520e4faf Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Mon, 11 Jun 2018 12:52:04 +0200 Subject: CppTools: Take "-include" files into account Fixes: QTCREATORBUG-20602 Change-Id: Ibfc518fc64ed75f93265db800558ec1d2e424bb4 Reviewed-by: Christian Stenger --- src/plugins/cpptools/compileroptionsbuilder.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/plugins/cpptools/compileroptionsbuilder.cpp') diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp index 246298d98c..0fe9deb7d1 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.cpp +++ b/src/plugins/cpptools/compileroptionsbuilder.cpp @@ -140,6 +140,7 @@ QStringList CompilerOptionsBuilder::build(ProjectFile::Kind fileKind, addLanguageVersionAndExtensions(); addMsvcExceptions(); + addIncludedFiles(m_projectPart.includedFiles); // GCC adds these before precompiled headers. addPrecompiledHeaderOptions(usePrecompiledHeaders); addProjectConfigFileInclude(); @@ -368,6 +369,21 @@ void CompilerOptionsBuilder::addHeaderPathOptions() } } +void CompilerOptionsBuilder::addIncludedFiles(const QStringList &files) +{ + QStringList result; + + const QString includeOptionString + = QLatin1String(isClStyle() ? includeFileOptionCl : includeFileOptionGcc); + for (const QString &file : files) { + if (QFile::exists(file)) { + result += includeOptionString; + result += QDir::toNativeSeparators(file); + } + } + m_options.append(result); +} + void CompilerOptionsBuilder::addPrecompiledHeaderOptions(UsePrecompiledHeaders usePrecompiledHeaders) { for (const QString &pchFile : m_projectPart.precompiledHeaders) { @@ -830,6 +846,12 @@ void CompilerOptionsBuilder::evaluateCompilerFlags() continue; } + // These were already parsed into ProjectPart::includedFiles. + if (option == includeFileOptionCl || option == includeFileOptionGcc) { + skipNext = true; + continue; + } + if (option.startsWith("/Y", Qt::CaseSensitive) || (option.startsWith("/F", Qt::CaseSensitive) && option != "/F")) { // Precompiled header flags. -- cgit v1.2.1