diff options
author | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2018-11-01 09:22:52 +0100 |
---|---|---|
committer | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2018-11-02 14:12:34 +0000 |
commit | 3c3b75cef1cb67eebeb3cf0ea771b67992ea3c36 (patch) | |
tree | 147c8c62140546a53b80061d9f727a72257badd1 /src/plugins/compilationdatabaseprojectmanager/compilationdatabaseutils.cpp | |
parent | e49e32d2ebf6701438680176aeb0f76fe1b81356 (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.cpp | 15 |
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; |