aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2018-11-01 09:22:52 +0100
committerIvan Donchevskii <ivan.donchevskii@qt.io>2018-11-02 14:12:34 +0000
commit3c3b75cef1cb67eebeb3cf0ea771b67992ea3c36 (patch)
tree147c8c62140546a53b80061d9f727a72257badd1 /src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp
parente49e32d2ebf6701438680176aeb0f76fe1b81356 (diff)
CompilationDatabase: Fix command line parsing
Handle cased when -x{kind} is one option. Skip -o output files. Task-number: QTCREATORBUG-18402 Change-Id: Id8a8612bed2db2b35f17b0968a4ff529e7a66194 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp')
-rw-r--r--src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp
index 30ad52160ed..2dd20dd9e5f 100644
--- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp
+++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp
@@ -49,9 +49,12 @@ static QString updatedPathFlag(const QString &pathStr, const QString &workingDir
return result;
}
-static CppTools::ProjectFile::Kind fileKindFromString(const QString &flag)
+static CppTools::ProjectFile::Kind fileKindFromString(QString flag)
{
using namespace CppTools;
+ if (flag.startsWith("-x"))
+ flag = flag.mid(2);
+
if (flag == "c++-header")
return ProjectFile::CXXHeader;
if (flag == "c-header")
@@ -118,8 +121,14 @@ void filteredFlags(const QString &fileName,
continue;
}
- if (fileKindIsNext || flag == "/TC" || flag == "/TP"
- || flag.startsWith("/Tc") || flag.startsWith("/Tp")) {
+ if (flag == "-o") {
+ skipNext = true;
+ continue;
+ }
+
+ if (flag != "-x"
+ && (fileKindIsNext || flag == "/TC" || flag == "/TP"
+ || flag.startsWith("/Tc") || flag.startsWith("/Tp") || flag.startsWith("-x"))) {
fileKindIsNext = false;
fileKind = fileKindFromString(flag);
continue;