forked from qt-creator/qt-creator
Incredibuild: Use more FilePath in CommandBuilder
Change-Id: I31e2be7cbd8f5ac58db4bead1fa3266bb80df868 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -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
|
||||||
|
@@ -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;
|
||||||
};
|
};
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
|
@@ -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");
|
||||||
|
@@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user