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;
}
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
// 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) {
m_abi = Abi();
m_vcvarsBat.clear();
setVarsBatArg("");
changeVcVarsCall("");
return;
}
m_abi = base->targetAbi();
m_vcvarsBat = base->varsBat();
setVarsBatArg(base->varsBatArg());
initEnvModWatcher(Utils::runAsync(envModThreadPool(),
&ClangClToolChain::environmentModifications,
m_vcvarsBat,
base->varsBatArg()));
m_abi = base->targetAbi();
changeVcVarsCall(base->varsBat(), base->varsBatArg());
}
bool ClangClToolChain::operator==(const ToolChain &other) const

View File

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