aboutsummaryrefslogtreecommitdiffstats
path: root/src/tools/clangbackend/clangbackendmain.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/clangbackend/clangbackendmain.cpp')
-rw-r--r--src/tools/clangbackend/clangbackendmain.cpp24
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);