forked from qt-creator/qt-creator
ProjectExplorer: Replace unusual MsvcToolChain constructor
... by default plus a separate function. Change-Id: Ib9507a3ecf6073ab4231218a3f2d3a532f6c680f Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -843,25 +843,6 @@ static void addToAvailableMsvcToolchains(const MsvcToolChain *toolchain)
|
|||||||
g_availableMsvcToolchains.push_back(toolchain);
|
g_availableMsvcToolchains.push_back(toolchain);
|
||||||
}
|
}
|
||||||
|
|
||||||
MsvcToolChain::MsvcToolChain(Core::Id typeId,
|
|
||||||
const Abi &abi,
|
|
||||||
const QString &varsBat,
|
|
||||||
const QString &varsBatArg)
|
|
||||||
: ToolChain(typeId)
|
|
||||||
, m_lastEnvironment(Utils::Environment::systemEnvironment())
|
|
||||||
, m_abi(abi)
|
|
||||||
, m_vcvarsBat(varsBat)
|
|
||||||
, m_varsBatArg(varsBatArg)
|
|
||||||
{
|
|
||||||
detectInstalledAbis();
|
|
||||||
addToAvailableMsvcToolchains(this);
|
|
||||||
|
|
||||||
initEnvModWatcher(Utils::runAsync(envModThreadPool(),
|
|
||||||
&MsvcToolChain::environmentModifications,
|
|
||||||
varsBat,
|
|
||||||
varsBatArg));
|
|
||||||
}
|
|
||||||
|
|
||||||
MsvcToolChain::MsvcToolChain(Core::Id typeId)
|
MsvcToolChain::MsvcToolChain(Core::Id typeId)
|
||||||
: ToolChain(typeId)
|
: ToolChain(typeId)
|
||||||
{}
|
{}
|
||||||
@@ -1247,17 +1228,19 @@ IOutputParser *MsvcToolChain::outputParser() const
|
|||||||
return new MsvcParser;
|
return new MsvcParser;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MsvcToolChain::changeVcVarsCall(const QString &varsBat, const QString &varsBatArg)
|
void MsvcToolChain::setupVarsBat(const Abi &abi, const QString &varsBat, const QString &varsBatArg)
|
||||||
{
|
{
|
||||||
|
m_lastEnvironment = Utils::Environment::systemEnvironment();
|
||||||
|
m_abi = abi;
|
||||||
m_vcvarsBat = varsBat;
|
m_vcvarsBat = varsBat;
|
||||||
m_varsBatArg = varsBatArg;
|
m_varsBatArg = varsBatArg;
|
||||||
|
|
||||||
if (!varsBat.isEmpty()) {
|
if (!varsBat.isEmpty()) {
|
||||||
detectInstalledAbis();
|
detectInstalledAbis();
|
||||||
initEnvModWatcher(Utils::runAsync(envModThreadPool(),
|
initEnvModWatcher(Utils::runAsync(envModThreadPool(),
|
||||||
&ClangClToolChain::environmentModifications,
|
&MsvcToolChain::environmentModifications,
|
||||||
m_vcvarsBat,
|
varsBat,
|
||||||
m_varsBatArg));
|
varsBatArg));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1357,9 +1340,8 @@ void MsvcToolChainConfigWidget::applyImpl()
|
|||||||
{
|
{
|
||||||
auto *tc = static_cast<MsvcToolChain *>(toolChain());
|
auto *tc = static_cast<MsvcToolChain *>(toolChain());
|
||||||
QTC_ASSERT(tc, return );
|
QTC_ASSERT(tc, return );
|
||||||
tc->setTargetAbi(m_abiWidget->currentAbi());
|
|
||||||
const QString vcVars = QDir::fromNativeSeparators(m_varsBatPathCombo->currentText());
|
const QString vcVars = QDir::fromNativeSeparators(m_varsBatPathCombo->currentText());
|
||||||
tc->changeVcVarsCall(vcVars, vcVarsArguments());
|
tc->setupVarsBat(m_abiWidget->currentAbi(), vcVars, vcVarsArguments());
|
||||||
setFromMsvcToolChain();
|
setFromMsvcToolChain();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1653,9 +1635,11 @@ void ClangClToolChainConfigWidget::makeReadOnlyImpl()
|
|||||||
// --------------------------------------------------------------------------
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
ClangClToolChain::ClangClToolChain(const QString &clangPath)
|
ClangClToolChain::ClangClToolChain(const QString &clangPath)
|
||||||
: MsvcToolChain(Constants::CLANG_CL_TOOLCHAIN_TYPEID, Abi(), "", "")
|
: MsvcToolChain(Constants::CLANG_CL_TOOLCHAIN_TYPEID)
|
||||||
, m_clangPath(clangPath)
|
, m_clangPath(clangPath)
|
||||||
{}
|
{
|
||||||
|
setupVarsBat(Abi(), "", "");
|
||||||
|
}
|
||||||
|
|
||||||
ClangClToolChain::ClangClToolChain()
|
ClangClToolChain::ClangClToolChain()
|
||||||
: MsvcToolChain(Constants::CLANG_CL_TOOLCHAIN_TYPEID)
|
: MsvcToolChain(Constants::CLANG_CL_TOOLCHAIN_TYPEID)
|
||||||
@@ -1726,14 +1710,10 @@ std::unique_ptr<ToolChainConfigWidget> ClangClToolChain::createConfigurationWidg
|
|||||||
|
|
||||||
void ClangClToolChain::resetMsvcToolChain(const MsvcToolChain *base)
|
void ClangClToolChain::resetMsvcToolChain(const MsvcToolChain *base)
|
||||||
{
|
{
|
||||||
if (!base) {
|
if (base)
|
||||||
m_abi = Abi();
|
setupVarsBat(base->targetAbi(), base->varsBat(), base->varsBatArg());
|
||||||
changeVcVarsCall("");
|
else
|
||||||
return;
|
setupVarsBat(Abi(), "", "");
|
||||||
}
|
|
||||||
|
|
||||||
m_abi = base->targetAbi();
|
|
||||||
changeVcVarsCall(base->varsBat(), base->varsBatArg());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ClangClToolChain::operator==(const ToolChain &other) const
|
bool ClangClToolChain::operator==(const ToolChain &other) const
|
||||||
@@ -1832,12 +1812,15 @@ static QList<ToolChain *> findOrCreateToolChain(const QList<ToolChain *> &alread
|
|||||||
auto mtc = static_cast<MsvcToolChain *>(tc);
|
auto mtc = static_cast<MsvcToolChain *>(tc);
|
||||||
return mtc->varsBat() == varsBat && mtc->varsBatArg() == varsBatArg;
|
return mtc->varsBat() == varsBat && mtc->varsBatArg() == varsBatArg;
|
||||||
});
|
});
|
||||||
if (!tc) {
|
if (tc) {
|
||||||
tc = new MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID, abi, varsBat, varsBatArg);
|
|
||||||
tc->setDisplayName(name);
|
|
||||||
tc->setLanguage(language);
|
|
||||||
}
|
|
||||||
res << tc;
|
res << tc;
|
||||||
|
} else {
|
||||||
|
auto mstc = new MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID);
|
||||||
|
mstc->setupVarsBat(abi, varsBat, varsBatArg);
|
||||||
|
mstc->setDisplayName(name);
|
||||||
|
mstc->setLanguage(language);
|
||||||
|
res << mstc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
@@ -1870,10 +1853,8 @@ static void detectCppBuildTools2015(QList<ToolChain *> *list)
|
|||||||
e.format,
|
e.format,
|
||||||
e.wordSize);
|
e.wordSize);
|
||||||
for (auto language : {Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID}) {
|
for (auto language : {Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID}) {
|
||||||
auto tc = new MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID,
|
auto tc = new MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID);
|
||||||
abi,
|
tc->setupVarsBat(abi, vcVarsBat, QLatin1String(e.varsBatArg));
|
||||||
vcVarsBat,
|
|
||||||
QLatin1String(e.varsBatArg));
|
|
||||||
tc->setDisplayName(name + QLatin1String(e.postFix));
|
tc->setDisplayName(name + QLatin1String(e.postFix));
|
||||||
tc->setDetection(ToolChain::AutoDetection);
|
tc->setDetection(ToolChain::AutoDetection);
|
||||||
tc->setLanguage(language);
|
tc->setLanguage(language);
|
||||||
@@ -2150,8 +2131,8 @@ bool MsvcToolChainFactory::canCreate() const
|
|||||||
|
|
||||||
ToolChain *MsvcToolChainFactory::create()
|
ToolChain *MsvcToolChainFactory::create()
|
||||||
{
|
{
|
||||||
auto tc = new MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID,
|
auto tc = new MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID);
|
||||||
Abi::hostAbi(), g_availableMsvcToolchains.first()->varsBat(), "");
|
tc->setupVarsBat(Abi::hostAbi(), g_availableMsvcToolchains.first()->varsBat(), "");
|
||||||
tc->setDisplayName("Microsoft Visual C++ Compiler");
|
tc->setDisplayName("Microsoft Visual C++ Compiler");
|
||||||
return tc;
|
return tc;
|
||||||
}
|
}
|
||||||
|
@@ -57,12 +57,7 @@ public:
|
|||||||
enum Type { WindowsSDK, VS };
|
enum Type { WindowsSDK, VS };
|
||||||
enum Platform { x86, amd64, x86_amd64, ia64, x86_ia64, arm, x86_arm, amd64_arm, amd64_x86 };
|
enum Platform { x86, amd64, x86_amd64, ia64, x86_ia64, arm, x86_arm, amd64_arm, amd64_x86 };
|
||||||
|
|
||||||
explicit MsvcToolChain(Core::Id typeId,
|
|
||||||
const Abi &abi,
|
|
||||||
const QString &varsBat,
|
|
||||||
const QString &varsBatArg);
|
|
||||||
explicit MsvcToolChain(Core::Id typeId);
|
explicit MsvcToolChain(Core::Id typeId);
|
||||||
|
|
||||||
~MsvcToolChain() override;
|
~MsvcToolChain() override;
|
||||||
|
|
||||||
Abi targetAbi() const override;
|
Abi targetAbi() const override;
|
||||||
@@ -98,7 +93,7 @@ public:
|
|||||||
QString varsBatArg() const { return m_varsBatArg; }
|
QString varsBatArg() const { return m_varsBatArg; }
|
||||||
QString varsBat() const { return m_vcvarsBat; }
|
QString varsBat() const { return m_vcvarsBat; }
|
||||||
void setVarsBatArg(const QString &varsBA) { m_varsBatArg = varsBA; }
|
void setVarsBatArg(const QString &varsBA) { m_varsBatArg = varsBA; }
|
||||||
void changeVcVarsCall(const QString &varsBat, const QString &varsBatArgs = QString());
|
void setupVarsBat(const Abi &abi, const QString &varsBat, const QString &varsBatArg);
|
||||||
|
|
||||||
bool operator==(const ToolChain &) const override;
|
bool operator==(const ToolChain &) const override;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user