summaryrefslogtreecommitdiff
path: root/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2019-10-28 15:28:07 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2019-10-29 09:50:04 +0000
commit74d458c0da24d6f99e8b0df58541ba92ad20973c (patch)
treef4bf960ba4152a1a917da512e3edc77f59cd06a7 /src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp
parent86bd49e6ab706c2b4e2ac62573ff10f212395a7c (diff)
downloadqt-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.cpp27
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;
}