diff options
author | hjk <hjk@qt.io> | 2019-06-14 14:05:51 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2019-06-18 09:51:23 +0000 |
commit | aef8255ba091acaad10cef7146a6aa1349abb734 (patch) | |
tree | 4660370dd3cfdac6b18b2b00f68e0d83c31d526d | |
parent | be55253f6fd8d95952006c113a948a9c48b09414 (diff) |
ProjectExplorer: Replace unusual MsvcToolChain constructor
... by default plus a separate function.
Change-Id: Ib9507a3ecf6073ab4231218a3f2d3a532f6c680f
Reviewed-by: hjk <hjk@qt.io>
-rw-r--r-- | src/plugins/projectexplorer/msvctoolchain.cpp | 73 | ||||
-rw-r--r-- | src/plugins/projectexplorer/msvctoolchain.h | 7 |
2 files changed, 28 insertions, 52 deletions
diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index 34e56c18d0..824cb07dfe 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -843,25 +843,6 @@ static void addToAvailableMsvcToolchains(const MsvcToolChain *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) : ToolChain(typeId) {} @@ -1247,17 +1228,19 @@ IOutputParser *MsvcToolChain::outputParser() const 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_varsBatArg = varsBatArg; if (!varsBat.isEmpty()) { detectInstalledAbis(); initEnvModWatcher(Utils::runAsync(envModThreadPool(), - &ClangClToolChain::environmentModifications, - m_vcvarsBat, - m_varsBatArg)); + &MsvcToolChain::environmentModifications, + varsBat, + varsBatArg)); } } @@ -1357,9 +1340,8 @@ void MsvcToolChainConfigWidget::applyImpl() { auto *tc = static_cast<MsvcToolChain *>(toolChain()); QTC_ASSERT(tc, return ); - tc->setTargetAbi(m_abiWidget->currentAbi()); const QString vcVars = QDir::fromNativeSeparators(m_varsBatPathCombo->currentText()); - tc->changeVcVarsCall(vcVars, vcVarsArguments()); + tc->setupVarsBat(m_abiWidget->currentAbi(), vcVars, vcVarsArguments()); setFromMsvcToolChain(); } @@ -1653,9 +1635,11 @@ void ClangClToolChainConfigWidget::makeReadOnlyImpl() // -------------------------------------------------------------------------- ClangClToolChain::ClangClToolChain(const QString &clangPath) - : MsvcToolChain(Constants::CLANG_CL_TOOLCHAIN_TYPEID, Abi(), "", "") + : MsvcToolChain(Constants::CLANG_CL_TOOLCHAIN_TYPEID) , m_clangPath(clangPath) -{} +{ + setupVarsBat(Abi(), "", ""); +} ClangClToolChain::ClangClToolChain() : MsvcToolChain(Constants::CLANG_CL_TOOLCHAIN_TYPEID) @@ -1726,14 +1710,10 @@ std::unique_ptr<ToolChainConfigWidget> ClangClToolChain::createConfigurationWidg void ClangClToolChain::resetMsvcToolChain(const MsvcToolChain *base) { - if (!base) { - m_abi = Abi(); - changeVcVarsCall(""); - return; - } - - m_abi = base->targetAbi(); - changeVcVarsCall(base->varsBat(), base->varsBatArg()); + if (base) + setupVarsBat(base->targetAbi(), base->varsBat(), base->varsBatArg()); + else + setupVarsBat(Abi(), "", ""); } 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); return mtc->varsBat() == varsBat && mtc->varsBatArg() == varsBatArg; }); - if (!tc) { - tc = new MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID, abi, varsBat, varsBatArg); - tc->setDisplayName(name); - tc->setLanguage(language); + if (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; } - res << tc; } return res; } @@ -1870,10 +1853,8 @@ static void detectCppBuildTools2015(QList<ToolChain *> *list) e.format, e.wordSize); for (auto language : {Constants::C_LANGUAGE_ID, Constants::CXX_LANGUAGE_ID}) { - auto tc = new MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID, - abi, - vcVarsBat, - QLatin1String(e.varsBatArg)); + auto tc = new MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID); + tc->setupVarsBat(abi, vcVarsBat, QLatin1String(e.varsBatArg)); tc->setDisplayName(name + QLatin1String(e.postFix)); tc->setDetection(ToolChain::AutoDetection); tc->setLanguage(language); @@ -2150,8 +2131,8 @@ bool MsvcToolChainFactory::canCreate() const ToolChain *MsvcToolChainFactory::create() { - auto tc = new MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID, - Abi::hostAbi(), g_availableMsvcToolchains.first()->varsBat(), ""); + auto tc = new MsvcToolChain(Constants::MSVC_TOOLCHAIN_TYPEID); + tc->setupVarsBat(Abi::hostAbi(), g_availableMsvcToolchains.first()->varsBat(), ""); tc->setDisplayName("Microsoft Visual C++ Compiler"); return tc; } diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h index 57cf93fedf..14e93b0ded 100644 --- a/src/plugins/projectexplorer/msvctoolchain.h +++ b/src/plugins/projectexplorer/msvctoolchain.h @@ -57,12 +57,7 @@ public: enum Type { WindowsSDK, VS }; 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); - ~MsvcToolChain() override; Abi targetAbi() const override; @@ -98,7 +93,7 @@ public: QString varsBatArg() const { return m_varsBatArg; } QString varsBat() const { return m_vcvarsBat; } 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; |