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;
|
return;
|
||||||
temp.close();
|
temp.close();
|
||||||
|
|
||||||
auto rccBinary = QtSupport::QtKitAspect::qtVersion(currentProject->activeTarget()->kit())->hostBinPath();
|
QtSupport::BaseQtVersion *qtVersion = QtSupport::QtKitAspect::qtVersion(
|
||||||
rccBinary = rccBinary.pathAppended(Utils::HostOsInfo::withExecutableSuffix("rcc"));
|
currentProject->activeTarget()->kit());
|
||||||
|
QString rccBinary = qtVersion->rccCommand();
|
||||||
|
|
||||||
QProcess rccProcess;
|
QProcess rccProcess;
|
||||||
rccProcess.setProgram(rccBinary.toString());
|
|
||||||
rccProcess.setWorkingDirectory(projectPath);
|
rccProcess.setWorkingDirectory(projectPath);
|
||||||
|
|
||||||
const QStringList arguments1 = {"--project", "--output", temp.fileName()};
|
const QStringList arguments1 = {"--project", "--output", temp.fileName()};
|
||||||
const QStringList arguments2 = {"--binary", "--output", resourceFileName, temp.fileName()};
|
const QStringList arguments2 = {"--binary", "--output", resourceFileName, temp.fileName()};
|
||||||
|
|
||||||
for (const auto &arguments : {arguments1, arguments2}) {
|
for (const auto &arguments : {arguments1, arguments2}) {
|
||||||
rccProcess.start(rccBinary.toString(), arguments);
|
rccProcess.start(rccBinary, arguments);
|
||||||
if (!rccProcess.waitForStarted()) {
|
if (!rccProcess.waitForStarted()) {
|
||||||
Core::MessageManager::writeDisrupting(
|
Core::MessageManager::writeDisrupting(
|
||||||
QCoreApplication::translate("QmlDesigner::GenerateResource",
|
QCoreApplication::translate("QmlDesigner::GenerateResource",
|
||||||
@@ -125,7 +125,7 @@ void GenerateResource::generateMenuEntry()
|
|||||||
Core::MessageManager::writeDisrupting(
|
Core::MessageManager::writeDisrupting(
|
||||||
QCoreApplication::translate("QmlDesigner::GenerateResource",
|
QCoreApplication::translate("QmlDesigner::GenerateResource",
|
||||||
"A timeout occurred running \"%1\"")
|
"A timeout occurred running \"%1\"")
|
||||||
.arg(rccBinary.toString() + arguments.join(" ")));
|
.arg(rccBinary + " " + arguments.join(" ")));
|
||||||
return ;
|
return ;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -138,14 +138,14 @@ void GenerateResource::generateMenuEntry()
|
|||||||
if (rccProcess.exitStatus() != QProcess::NormalExit) {
|
if (rccProcess.exitStatus() != QProcess::NormalExit) {
|
||||||
Core::MessageManager::writeDisrupting(
|
Core::MessageManager::writeDisrupting(
|
||||||
QCoreApplication::translate("QmlDesigner::GenerateResource", "\"%1\" crashed.")
|
QCoreApplication::translate("QmlDesigner::GenerateResource", "\"%1\" crashed.")
|
||||||
.arg(rccBinary.toString() + arguments.join(" ")));
|
.arg(rccBinary + " " + arguments.join(" ")));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (rccProcess.exitCode() != 0) {
|
if (rccProcess.exitCode() != 0) {
|
||||||
Core::MessageManager::writeDisrupting(
|
Core::MessageManager::writeDisrupting(
|
||||||
QCoreApplication::translate("QmlDesigner::GenerateResource",
|
QCoreApplication::translate("QmlDesigner::GenerateResource",
|
||||||
"\"%1\" failed (exit code %2).")
|
"\"%1\" failed (exit code %2).")
|
||||||
.arg(rccBinary.toString() + " " + arguments.join(" "))
|
.arg(rccBinary + " " + arguments.join(" "))
|
||||||
.arg(rccProcess.exitCode()));
|
.arg(rccProcess.exitCode()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -171,7 +171,7 @@ private:
|
|||||||
mutable std::unique_ptr<MacroExpander> m_expander;
|
mutable std::unique_ptr<MacroExpander> m_expander;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum HostBinaries { Designer, Linguist, Uic, QScxmlc };
|
enum HostBinaries { Designer, Linguist, Rcc, Uic, QScxmlc };
|
||||||
|
|
||||||
class BaseQtVersionPrivate
|
class BaseQtVersionPrivate
|
||||||
{
|
{
|
||||||
@@ -232,6 +232,7 @@ public:
|
|||||||
|
|
||||||
FilePath m_qmakeCommand;
|
FilePath m_qmakeCommand;
|
||||||
|
|
||||||
|
QString m_rccCommand;
|
||||||
QString m_uicCommand;
|
QString m_uicCommand;
|
||||||
QString m_designerCommand;
|
QString m_designerCommand;
|
||||||
QString m_linguistCommand;
|
QString m_linguistCommand;
|
||||||
@@ -1021,6 +1022,7 @@ QString BaseQtVersionPrivate::findHostBinary(HostBinaries binary) const
|
|||||||
case Linguist:
|
case Linguist:
|
||||||
baseDir = m_mkspecValues.value("QT.designer.bins");
|
baseDir = m_mkspecValues.value("QT.designer.bins");
|
||||||
break;
|
break;
|
||||||
|
case Rcc:
|
||||||
case Uic:
|
case Uic:
|
||||||
case QScxmlc:
|
case QScxmlc:
|
||||||
baseDir = q->hostBinPath().toString();
|
baseDir = q->hostBinPath().toString();
|
||||||
@@ -1050,6 +1052,14 @@ QString BaseQtVersionPrivate::findHostBinary(HostBinaries binary) const
|
|||||||
else
|
else
|
||||||
possibleCommands << HostOsInfo::withExecutableSuffix("linguist");
|
possibleCommands << HostOsInfo::withExecutableSuffix("linguist");
|
||||||
break;
|
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:
|
case Uic:
|
||||||
if (HostOsInfo::isWindowsHost()) {
|
if (HostOsInfo::isWindowsHost()) {
|
||||||
possibleCommands << "uic.exe";
|
possibleCommands << "uic.exe";
|
||||||
@@ -1072,6 +1082,16 @@ QString BaseQtVersionPrivate::findHostBinary(HostBinaries binary) const
|
|||||||
return QString();
|
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
|
QString BaseQtVersion::uicCommand() const
|
||||||
{
|
{
|
||||||
if (!isValid())
|
if (!isValid())
|
||||||
|
@@ -131,6 +131,7 @@ public:
|
|||||||
bool isInSourceDirectory(const Utils::FilePath &filePath);
|
bool isInSourceDirectory(const Utils::FilePath &filePath);
|
||||||
bool isSubProject(const Utils::FilePath &filePath) const;
|
bool isSubProject(const Utils::FilePath &filePath) const;
|
||||||
|
|
||||||
|
QString rccCommand() const;
|
||||||
// used by UiCodeModelSupport
|
// used by UiCodeModelSupport
|
||||||
QString uicCommand() const;
|
QString uicCommand() const;
|
||||||
QString designerCommand() const;
|
QString designerCommand() const;
|
||||||
|
Reference in New Issue
Block a user