Incredibuild: Use more FilePath in CommandBuilder

Change-Id: I31e2be7cbd8f5ac58db4bead1fa3266bb80df868
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2021-09-28 12:29:29 +02:00
parent ba672d1334
commit eedf02e40f
7 changed files with 34 additions and 35 deletions

View File

@@ -36,6 +36,7 @@
#include <QStandardPaths> #include <QStandardPaths>
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils;
namespace IncrediBuild { namespace IncrediBuild {
namespace Internal { namespace Internal {
@@ -45,11 +46,11 @@ QList<Utils::Id> CMakeCommandBuilder::migratableSteps() const
return {CMakeProjectManager::Constants::CMAKE_BUILD_STEP_ID}; return {CMakeProjectManager::Constants::CMAKE_BUILD_STEP_ID};
} }
QString CMakeCommandBuilder::defaultCommand() const FilePath CMakeCommandBuilder::defaultCommand() const
{ {
const QString defaultCMake = "cmake"; const QString defaultCMake = "cmake";
const QString cmake = QStandardPaths::findExecutable(defaultCMake); const QString cmake = QStandardPaths::findExecutable(defaultCMake);
return cmake.isEmpty() ? defaultCMake : cmake; return FilePath::fromString(cmake.isEmpty() ? defaultCMake : cmake);
} }
QString CMakeCommandBuilder::defaultArguments() const QString CMakeCommandBuilder::defaultArguments() const

View File

@@ -41,7 +41,7 @@ private:
QList<Utils::Id> migratableSteps() const final; QList<Utils::Id> migratableSteps() const final;
QString id() const final { return "CMakeCommandBuilder"; } QString id() const final { return "CMakeCommandBuilder"; }
QString displayName() const final { return tr("CMake"); } QString displayName() const final { return tr("CMake"); }
QString defaultCommand() const final; Utils::FilePath defaultCommand() const final;
QString defaultArguments() const final; QString defaultArguments() const final;
QString setMultiProcessArg(QString args) final; QString setMultiProcessArg(QString args) final;
}; };

View File

@@ -25,27 +25,27 @@
#include "commandbuilder.h" #include "commandbuilder.h"
using namespace Utils;
namespace IncrediBuild { namespace IncrediBuild {
namespace Internal { namespace Internal {
namespace Constants { const char CUSTOMCOMMANDBUILDER_COMMAND[] = "IncrediBuild.BuildConsole.%1.Command";
const QLatin1String CUSTOMCOMMANDBUILDER_COMMAND("IncrediBuild.BuildConsole.%1.Command"); const char CUSTOMCOMMANDBUILDER_ARGS[] = "IncrediBuild.BuildConsole.%1.Arguments";
const QLatin1String CUSTOMCOMMANDBUILDER_ARGS("IncrediBuild.BuildConsole.%1.Arguments");
} // namespace Constants
void CommandBuilder::fromMap(const QVariantMap &map) void CommandBuilder::fromMap(const QVariantMap &map)
{ {
m_command = map.value(QString(Constants::CUSTOMCOMMANDBUILDER_COMMAND).arg(id())).toString(); m_command = FilePath::fromVariant(map.value(QString(CUSTOMCOMMANDBUILDER_COMMAND).arg(id())));
m_args = map.value(QString(Constants::CUSTOMCOMMANDBUILDER_ARGS).arg(id())).toString(); m_args = map.value(QString(CUSTOMCOMMANDBUILDER_ARGS).arg(id())).toString();
} }
void CommandBuilder::toMap(QVariantMap *map) const void CommandBuilder::toMap(QVariantMap *map) const
{ {
(*map)[QString(Constants::CUSTOMCOMMANDBUILDER_COMMAND).arg(id())] = QVariant(m_command); (*map)[QString(CUSTOMCOMMANDBUILDER_COMMAND).arg(id())] = m_command.toVariant();
(*map)[QString(Constants::CUSTOMCOMMANDBUILDER_ARGS).arg(id())] = QVariant(m_args); (*map)[QString(CUSTOMCOMMANDBUILDER_ARGS).arg(id())] = QVariant(m_args);
} }
void CommandBuilder::setCommand(const QString &command) void CommandBuilder::setCommand(const FilePath &command)
{ {
m_command = command; m_command = command;
} }

View File

@@ -50,20 +50,20 @@ public:
virtual void fromMap(const QVariantMap &map); virtual void fromMap(const QVariantMap &map);
virtual void toMap(QVariantMap *map) const; virtual void toMap(QVariantMap *map) const;
virtual QString defaultCommand() const { return QString(); } virtual Utils::FilePath defaultCommand() const { return {}; }
virtual QString defaultArguments() const { return QString(); } virtual QString defaultArguments() const { return QString(); }
virtual QString setMultiProcessArg(QString args) { return args; } virtual QString setMultiProcessArg(QString args) { return args; }
QString command() const { return m_command; } Utils::FilePath command() const { return m_command; }
void setCommand(const QString &command); void setCommand(const Utils::FilePath &command);
QString effectiveCommand() const { return m_command.isEmpty() ? defaultCommand() : m_command; } Utils::FilePath effectiveCommand() const { return m_command.isEmpty() ? defaultCommand() : m_command; }
QString arguments() { return m_args.isEmpty() ? defaultArguments() : m_args; } QString arguments() { return m_args.isEmpty() ? defaultArguments() : m_args; }
void setArguments(const QString &arguments); void setArguments(const QString &arguments);
private: private:
ProjectExplorer::BuildStep *m_buildStep{}; ProjectExplorer::BuildStep *m_buildStep{};
QString m_command; Utils::FilePath m_command;
QString m_args; QString m_args;
}; };

View File

@@ -101,7 +101,7 @@ QString CommandBuilderAspect::fullCommandFlag(bool keepJobNum) const
argsLine = d->m_activeCommandBuilder->setMultiProcessArg(argsLine); argsLine = d->m_activeCommandBuilder->setMultiProcessArg(argsLine);
QString fullCommand("\"%1\" %2"); QString fullCommand("\"%1\" %2");
fullCommand = fullCommand.arg(d->m_activeCommandBuilder->effectiveCommand(), argsLine); fullCommand = fullCommand.arg(d->m_activeCommandBuilder->effectiveCommand().toUserOutput(), argsLine);
return fullCommand; return fullCommand;
} }
@@ -153,7 +153,7 @@ void CommandBuilderAspect::addToLayout(LayoutBuilder &builder)
d->makePathChooser->setBaseDirectory(PathChooser::homePath()); d->makePathChooser->setBaseDirectory(PathChooser::homePath());
d->makePathChooser->setHistoryCompleter("IncrediBuild.BuildConsole.MakeCommand.History"); d->makePathChooser->setHistoryCompleter("IncrediBuild.BuildConsole.MakeCommand.History");
connect(d->makePathChooser, &PathChooser::rawPathChanged, this, [this] { connect(d->makePathChooser, &PathChooser::rawPathChanged, this, [this] {
d->m_activeCommandBuilder->setCommand(d->makePathChooser->rawPath()); d->m_activeCommandBuilder->setCommand(d->makePathChooser->rawFilePath());
updateGui(); updateGui();
}); });
} }
@@ -212,9 +212,9 @@ void CommandBuilderAspect::updateGui()
d->commandBuilder->setCurrentText(d->m_activeCommandBuilder->displayName()); d->commandBuilder->setCurrentText(d->m_activeCommandBuilder->displayName());
const QString defaultCommand = d->m_activeCommandBuilder->defaultCommand(); const FilePath defaultCommand = d->m_activeCommandBuilder->defaultCommand();
d->makePathChooser->setPath(d->m_activeCommandBuilder->command()); d->makePathChooser->setFilePath(d->m_activeCommandBuilder->command());
d->makePathChooser->setDefaultValue(defaultCommand); d->makePathChooser->setDefaultValue(defaultCommand.toUserOutput());
const QString defaultArgs = d->m_activeCommandBuilder->defaultArguments(); const QString defaultArgs = d->m_activeCommandBuilder->defaultArguments();
d->makeArgumentsLineEdit->setPlaceholderText(defaultArgs); d->makeArgumentsLineEdit->setPlaceholderText(defaultArgs);

View File

@@ -41,6 +41,7 @@
#include <QRegularExpression> #include <QRegularExpression>
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils;
namespace IncrediBuild { namespace IncrediBuild {
namespace Internal { namespace Internal {
@@ -50,35 +51,32 @@ QList<Utils::Id> MakeCommandBuilder::migratableSteps() const
return {QmakeProjectManager::Constants::MAKESTEP_BS_ID}; return {QmakeProjectManager::Constants::MAKESTEP_BS_ID};
} }
QString MakeCommandBuilder::defaultCommand() const Utils::FilePath MakeCommandBuilder::defaultCommand() const
{ {
BuildConfiguration *buildConfig = buildStep()->buildConfiguration(); BuildConfiguration *buildConfig = buildStep()->buildConfiguration();
if (buildConfig) { if (buildConfig) {
Target *target = buildStep()->target(); if (Target *target = buildStep()->target()) {
if (target) { if (ToolChain *toolChain = ToolChainKitAspect::cxxToolChain(target->kit()))
ToolChain *toolChain = ToolChainKitAspect::toolChain(target->kit(), ProjectExplorer::Constants::CXX_LANGUAGE_ID); return toolChain->makeCommand(buildConfig->environment());
if (toolChain)
return toolChain->makeCommand(buildConfig->environment()).toUserOutput();
} }
} }
return QString(); return {};
} }
QString MakeCommandBuilder::setMultiProcessArg(QString args) QString MakeCommandBuilder::setMultiProcessArg(QString args)
{ {
QString cmd = command(); const FilePath cmd = command();
QFileInfo fileInfo(cmd);
// jom -j 200 // jom -j 200
if (fileInfo.baseName().compare("jom", Qt::CaseSensitivity::CaseInsensitive) == 0) { if (cmd.baseName().compare("jom", Qt::CaseSensitivity::CaseInsensitive) == 0) {
QRegularExpression regExp("\\s*\\-j\\s+\\d+"); QRegularExpression regExp("\\s*\\-j\\s+\\d+");
args.remove(regExp); args.remove(regExp);
args.append(" -j 200"); args.append(" -j 200");
} }
// make -j200 // make -j200
else if ((fileInfo.baseName().compare("make", Qt::CaseSensitivity::CaseInsensitive) == 0) else if ((cmd.baseName().compare("make", Qt::CaseSensitivity::CaseInsensitive) == 0)
|| (fileInfo.baseName().compare("gmake", Qt::CaseSensitivity::CaseInsensitive) == 0)) { || (cmd.baseName().compare("gmake", Qt::CaseSensitivity::CaseInsensitive) == 0)) {
QRegularExpression regExp("\\s*\\-j\\d+"); QRegularExpression regExp("\\s*\\-j\\d+");
args.remove(regExp); args.remove(regExp);
args.append(" -j200"); args.append(" -j200");

View File

@@ -41,7 +41,7 @@ private:
QList<Utils::Id> migratableSteps() const final; QList<Utils::Id> migratableSteps() const final;
QString id() const final { return "MakeCommandBuilder"; } QString id() const final { return "MakeCommandBuilder"; }
QString displayName() const final { return tr("Make"); } QString displayName() const final { return tr("Make"); }
QString defaultCommand() const final; Utils::FilePath defaultCommand() const final;
QString setMultiProcessArg(QString args) final; QString setMultiProcessArg(QString args) final;
}; };