9#include <QtCore/qcoreapplication.h>
10#include <QtCore/qdir.h>
11#include <QtCore/qregularexpression.h>
22 QString filePath = QLibraryInfo::path(location) + QLatin1Char(
'/') + toolName;
24 filePath.append(QLatin1String(
".exe"));
26 return QDir::cleanPath(filePath);
31 std::cerr << qUtf8Printable(out);
36 static QRegularExpression rx(QStringLiteral(
"\\s"));
38 if (result.contains(rx)) {
39 const QLatin1Char dblqt = QLatin1Char(
'"');
40 result.prepend(dblqt);
49 result.reserve(strs.size());
50 std::transform(strs.begin(), strs.end(),
std::back_inserter(result),
51 static_cast<QString (*)(
const QString &)>(&shellQuoted));
56 const QStringList &arguments)
58 return shellQuoted(program)
60 + shellQuoted(arguments).join(QLatin1Char(
' '));
64 QLibraryInfo::LibraryPath location)
67 const QString commandLine = commandLineForSystem(qtToolFilePath(toolName, location), arguments);
69 exitCode = _wsystem(
reinterpret_cast<
const wchar_t *>(commandLine.utf16()));
70#elif defined(Q_OS_UNIX)
71 int ret = std::system(qPrintable(commandLine));
72 exitCode = WEXITSTATUS(ret);
74 exitCode =
std::system(qPrintable(commandLine));
79void runQtTool(
const QString &toolName,
const QStringList &arguments,
80 QLibraryInfo::LibraryPath location)
82 const int exitCode = runQtToolHelper(toolName, arguments, location);
89 return runQtToolHelper(toolName, arguments, QLibraryInfo::LibraryExecutablesPath);
94 const int exitCode = runInternalQtToolHelper(toolName, arguments);
101 std::unique_ptr<QTemporaryFile> file(
new QTemporaryFile(QStringLiteral(
"XXXXXX.json")));
103 rtPrintErr(FMT::tr(
"Cannot create temporary file: %1\n").arg(file->errorString()));
107 args << QStringLiteral(
"-out") << file->fileName();
108 const int exitCode = runInternalQtToolHelper(QStringLiteral(
"lprodump"), args);