diff options
Diffstat (limited to 'src/plugins/cpptools/compileroptionsbuilder.cpp')
-rw-r--r-- | src/plugins/cpptools/compileroptionsbuilder.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/plugins/cpptools/compileroptionsbuilder.cpp b/src/plugins/cpptools/compileroptionsbuilder.cpp index f60434f7a4..6e3fa36817 100644 --- a/src/plugins/cpptools/compileroptionsbuilder.cpp +++ b/src/plugins/cpptools/compileroptionsbuilder.cpp @@ -48,6 +48,7 @@ static const char defineOption[] = "-D"; static const char undefineOption[] = "-U"; static const char includeUserPathOption[] = "-I"; +static const char includeUserPathOptionWindows[] = "/I"; static const char includeSystemPathOption[] = "-isystem"; static const char includeFileOptionGcc[] = "-include"; @@ -699,7 +700,13 @@ void CompilerOptionsBuilder::reset() void CompilerOptionsBuilder::evaluateCompilerFlags() { bool containsDriverMode = false; + bool skipNext = false; for (const QString &option : m_projectPart.compilerFlags) { + if (skipNext) { + skipNext = false; + continue; + } + // Ignore warning flags as these interfere with ouser user-configured diagnostics. // Note that once "-w" is provided, no warnings will be emitted, even if "-Wall" follows. if (option.startsWith("-w", Qt::CaseInsensitive) @@ -708,8 +715,17 @@ void CompilerOptionsBuilder::evaluateCompilerFlags() continue; } + if (option == includeUserPathOption || option == includeSystemPathOption + || option == includeUserPathOptionWindows) { + skipNext = true; + continue; + } + if (option.startsWith("-O", Qt::CaseSensitive) || option.startsWith("/O", Qt::CaseSensitive) - || option.startsWith("/M", Qt::CaseSensitive)) { + || option.startsWith("/M", Qt::CaseSensitive) + || option.startsWith(includeUserPathOption) + || option.startsWith(includeSystemPathOption) + || option.startsWith(includeUserPathOptionWindows)) { // Optimization and run-time flags. continue; } |