diff options
-rw-r--r-- | src/tools/clangbackend/clangbackendmain.cpp | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/tools/clangbackend/clangbackendmain.cpp b/src/tools/clangbackend/clangbackendmain.cpp index 33a6c1660e5..95b4931361e 100644 --- a/src/tools/clangbackend/clangbackendmain.cpp +++ b/src/tools/clangbackend/clangbackendmain.cpp @@ -28,6 +28,7 @@ ** ****************************************************************************/ +#include <QCommandLineParser> #include <QCoreApplication> #include <QLoggingCategory> @@ -35,6 +36,22 @@ #include <cmbmessages.h> #include <clangipcserver.h> +QString processArguments(QCoreApplication &application) +{ + QCommandLineParser parser; + parser.setApplicationDescription(QStringLiteral("Qt Creator Clang backend process.")); + parser.addHelpOption(); + parser.addVersionOption(); + parser.addPositionalArgument(QStringLiteral("connection"), QStringLiteral("Connection")); + + parser.process(application); + + if (parser.positionalArguments().isEmpty()) + parser.showHelp(1); + + return parser.positionalArguments().first(); +} + int main(int argc, char *argv[]) { QLoggingCategory::setFilterRules(QStringLiteral("*.debug=false")); @@ -46,10 +63,7 @@ int main(int argc, char *argv[]) QCoreApplication application(argc, argv); - if (application.arguments().count() != 2) { - qWarning() << "wrong argument count"; - return 1; - } + const QString connection = processArguments(application); ClangBackEnd::Messages::registerMessages(); @@ -57,7 +71,7 @@ int main(int argc, char *argv[]) clang_enableStackTraces(); ClangBackEnd::ClangIpcServer clangIpcServer; - ClangBackEnd::ConnectionServer connectionServer(application.arguments()[1]); + ClangBackEnd::ConnectionServer connectionServer(connection); connectionServer.start(); connectionServer.setIpcServer(&clangIpcServer); |