diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2019-10-28 15:28:07 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2019-10-29 09:50:04 +0000 |
commit | 74d458c0da24d6f99e8b0df58541ba92ad20973c (patch) | |
tree | f4bf960ba4152a1a917da512e3edc77f59cd06a7 /src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp | |
parent | 86bd49e6ab706c2b4e2ac62573ff10f212395a7c (diff) | |
download | qt-creator-74d458c0da24d6f99e8b0df58541ba92ad20973c.tar.gz |
CompilationDbManager: Add support for the "/imsvc" option
Fixes: QTCREATORBUG-23146
Change-Id: I024597d67e48595472b398ed40858bee17c1c4b9
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp')
-rw-r--r-- | src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp index 1affca78fa..7d045f329e 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp @@ -28,6 +28,7 @@ #include <projectexplorer/headerpath.h> #include <projectexplorer/projectmacro.h> +#include <utils/algorithm.h> #include <utils/hostosinfo.h> #include <utils/optional.h> @@ -155,14 +156,16 @@ void filteredFlags(const QString &fileName, continue; } - if ((flag.startsWith("-I") || flag.startsWith("-isystem") || flag.startsWith("/I")) - && flag != "-I" && flag != "-isystem" && flag != "/I") { - bool userInclude = flag.startsWith("-I"); - const QString pathStr = updatedPathFlag(flag.mid(userInclude ? 2 : 8), - workingDir); - headerPaths.append({pathStr, userInclude - ? HeaderPathType::User - : HeaderPathType::System}); + const QStringList userIncludeFlags{"-I", "/I"}; + const QStringList systemIncludeFlags{"-isystem", "-imsvc", "/imsvc"}; + const QStringList allIncludeFlags = QStringList(userIncludeFlags) << systemIncludeFlags; + const QString includeOpt = Utils::findOrDefault(allIncludeFlags, [flag](const QString &opt) { + return flag.startsWith(opt) && flag != opt; + }); + if (!includeOpt.isEmpty()) { + const QString pathStr = updatedPathFlag(flag.mid(includeOpt.length()), workingDir); + headerPaths.append({pathStr, userIncludeFlags.contains(includeOpt) + ? HeaderPathType::User : HeaderPathType::System}); continue; } @@ -174,8 +177,12 @@ void filteredFlags(const QString &fileName, continue; } - if (flag == "-I" || flag == "-isystem" || flag == "/I") { - includePathType = (flag != "-isystem") ? HeaderPathType::User : HeaderPathType::System; + if (userIncludeFlags.contains(flag)) { + includePathType = HeaderPathType::User; + continue; + } + if (systemIncludeFlags.contains(flag)) { + includePathType = HeaderPathType::System; continue; } |