CppTools: Take "-include" files into account

Fixes: QTCREATORBUG-20602
Change-Id: Ibfc518fc64ed75f93265db800558ec1d2e424bb4
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Nikolai Kosjar
2018-06-11 12:52:04 +02:00
committed by Christian Kandeler
parent c05ad9a951
commit 888ea6bbbb
21 changed files with 130 additions and 20 deletions

View File

@@ -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.