forked from qt-creator/qt-creator
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:
@@ -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;
|
||||
}
|
||||
|
@@ -171,7 +171,7 @@ private:
|
||||
mutable std::unique_ptr<MacroExpander> m_expander;
|
||||
};
|
||||
|
||||
enum HostBinaries { Designer, Linguist, Uic, QScxmlc };
|
||||
enum HostBinaries { Designer, Linguist, Rcc, Uic, QScxmlc };
|
||||
|
||||
class BaseQtVersionPrivate
|
||||
{
|
||||
@@ -232,6 +232,7 @@ public:
|
||||
|
||||
FilePath m_qmakeCommand;
|
||||
|
||||
QString m_rccCommand;
|
||||
QString m_uicCommand;
|
||||
QString m_designerCommand;
|
||||
QString m_linguistCommand;
|
||||
@@ -1021,6 +1022,7 @@ QString BaseQtVersionPrivate::findHostBinary(HostBinaries binary) const
|
||||
case Linguist:
|
||||
baseDir = m_mkspecValues.value("QT.designer.bins");
|
||||
break;
|
||||
case Rcc:
|
||||
case Uic:
|
||||
case QScxmlc:
|
||||
baseDir = q->hostBinPath().toString();
|
||||
@@ -1050,6 +1052,14 @@ QString BaseQtVersionPrivate::findHostBinary(HostBinaries binary) const
|
||||
else
|
||||
possibleCommands << HostOsInfo::withExecutableSuffix("linguist");
|
||||
break;
|
||||
case Rcc:
|
||||
if (HostOsInfo::isWindowsHost()) {
|
||||
possibleCommands << "rcc.exe";
|
||||
} else {
|
||||
const QString majorString = QString::number(q->qtVersion().majorVersion);
|
||||
possibleCommands << ("rcc-qt" + majorString) << ("rcc" + majorString) << "rcc";
|
||||
}
|
||||
break;
|
||||
case Uic:
|
||||
if (HostOsInfo::isWindowsHost()) {
|
||||
possibleCommands << "uic.exe";
|
||||
@@ -1072,6 +1082,16 @@ QString BaseQtVersionPrivate::findHostBinary(HostBinaries binary) const
|
||||
return QString();
|
||||
}
|
||||
|
||||
QString BaseQtVersion::rccCommand() const
|
||||
{
|
||||
if (!isValid())
|
||||
return QString();
|
||||
if (!d->m_rccCommand.isNull())
|
||||
return d->m_rccCommand;
|
||||
d->m_rccCommand = d->findHostBinary(Rcc);
|
||||
return d->m_rccCommand;
|
||||
}
|
||||
|
||||
QString BaseQtVersion::uicCommand() const
|
||||
{
|
||||
if (!isValid())
|
||||
|
@@ -131,6 +131,7 @@ public:
|
||||
bool isInSourceDirectory(const Utils::FilePath &filePath);
|
||||
bool isSubProject(const Utils::FilePath &filePath) const;
|
||||
|
||||
QString rccCommand() const;
|
||||
// used by UiCodeModelSupport
|
||||
QString uicCommand() const;
|
||||
QString designerCommand() const;
|
||||
|
Reference in New Issue
Block a user