QmlDesigner: Retrieve rcc command centrally

Change-Id: I6886a22b51a002b48c248b3f49adc622c58c7ad8
Reviewed-by: hjk <hjk@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Kai Köhne
2021-03-09 11:40:37 +01:00
committed by Kai Koehne
parent 3ad3f3ec16
commit c5ecb47c61
3 changed files with 29 additions and 8 deletions

View File

@@ -99,18 +99,18 @@ void GenerateResource::generateMenuEntry()
return;
temp.close();
auto rccBinary = QtSupport::QtKitAspect::qtVersion(currentProject->activeTarget()->kit())->hostBinPath();
rccBinary = rccBinary.pathAppended(Utils::HostOsInfo::withExecutableSuffix("rcc"));
QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitAspect::qtVersion(
currentProject->activeTarget()->kit());
QString rccBinary = qtVersion->rccCommand();
QProcess rccProcess;
rccProcess.setProgram(rccBinary.toString());
rccProcess.setWorkingDirectory(projectPath);
const QStringList arguments1 = {"--project", "--output", temp.fileName()};
const QStringList arguments2 = {"--binary", "--output", resourceFileName, temp.fileName()};
for (const auto &arguments : {arguments1, arguments2}) {
rccProcess.start(rccBinary.toString(), arguments);
rccProcess.start(rccBinary, arguments);
if (!rccProcess.waitForStarted()) {
Core::MessageManager::writeDisrupting(
QCoreApplication::translate("QmlDesigner::GenerateResource",
@@ -125,7 +125,7 @@ void GenerateResource::generateMenuEntry()
Core::MessageManager::writeDisrupting(
QCoreApplication::translate("QmlDesigner::GenerateResource",
"A timeout occurred running \"%1\"")
.arg(rccBinary.toString() + arguments.join(" ")));
.arg(rccBinary + " " + arguments.join(" ")));
return ;
}
@@ -138,14 +138,14 @@ void GenerateResource::generateMenuEntry()
if (rccProcess.exitStatus() != QProcess::NormalExit) {
Core::MessageManager::writeDisrupting(
QCoreApplication::translate("QmlDesigner::GenerateResource", "\"%1\" crashed.")
.arg(rccBinary.toString() + arguments.join(" ")));
.arg(rccBinary + " " + arguments.join(" ")));
return;
}
if (rccProcess.exitCode() != 0) {
Core::MessageManager::writeDisrupting(
QCoreApplication::translate("QmlDesigner::GenerateResource",
"\"%1\" failed (exit code %2).")
.arg(rccBinary.toString() + " " + arguments.join(" "))
.arg(rccBinary + " " + arguments.join(" "))
.arg(rccProcess.exitCode()));
return;
}