MsvcToolChain: Introduce changeVcVarsAllCall

In order to avoid code duplication in followup patches a function to set
the vcvars path and its arguments was introduced. It also takes care of
running the environment modification watcher.

Change-Id: I37dcb0a448bfac070267fdab8adefa074a3447fb
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Oliver Wolff
2019-05-07 10:01:14 +02:00
parent 593d754cd5
commit d0bb7ee721
2 changed files with 17 additions and 9 deletions

View File

@@ -1228,6 +1228,19 @@ IOutputParser *MsvcToolChain::outputParser() const
return new MsvcParser; return new MsvcParser;
} }
void MsvcToolChain::changeVcVarsCall(const QString &varsBat, const QString &varsBatArg)
{
m_vcvarsBat = varsBat;
m_varsBatArg = varsBatArg;
if (!varsBat.isEmpty()) {
initEnvModWatcher(Utils::runAsync(envModThreadPool(),
&ClangClToolChain::environmentModifications,
m_vcvarsBat,
m_varsBatArg));
}
}
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// MsvcBasedToolChainConfigWidget: Creates a simple GUI without error label // MsvcBasedToolChainConfigWidget: Creates a simple GUI without error label
// to display name and varsBat. Derived classes should add the error label and // to display name and varsBat. Derived classes should add the error label and
@@ -1563,18 +1576,12 @@ void ClangClToolChain::resetMsvcToolChain(const MsvcToolChain *base)
{ {
if (!base) { if (!base) {
m_abi = Abi(); m_abi = Abi();
m_vcvarsBat.clear(); changeVcVarsCall("");
setVarsBatArg("");
return; return;
} }
m_abi = base->targetAbi();
m_vcvarsBat = base->varsBat();
setVarsBatArg(base->varsBatArg());
initEnvModWatcher(Utils::runAsync(envModThreadPool(), m_abi = base->targetAbi();
&ClangClToolChain::environmentModifications, changeVcVarsCall(base->varsBat(), base->varsBatArg());
m_vcvarsBat,
base->varsBatArg()));
} }
bool ClangClToolChain::operator==(const ToolChain &other) const bool ClangClToolChain::operator==(const ToolChain &other) const

View File

@@ -100,6 +100,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());
bool operator==(const ToolChain &) const override; bool operator==(const ToolChain &) const override;