MSVC: Consider build environment when calculating header paths

Fixes: QTCREATORBUG-25816
Change-Id: Id6274d2bec4ed3db07729f1d88a5a9ad82c8d98d
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Christian Kandeler
2021-08-24 14:06:19 +02:00
parent e1cfaaeaca
commit 16df6164b0
2 changed files with 11 additions and 9 deletions

View File

@@ -1125,13 +1125,15 @@ ToolChain::BuiltInHeaderPathsRunner MsvcToolChain::createBuiltInHeaderPathsRunne
return [this, fullEnv](const QStringList &, const QString &, const QString &) {
QMutexLocker locker(&m_headerPathsMutex);
if (m_headerPaths.isEmpty()) {
m_headerPaths = transform<QVector>(fullEnv.pathListValue("INCLUDE"),
[](const FilePath &p) {
return HeaderPath(p.toString(), HeaderPathType::BuiltIn);
});
}
return m_headerPaths;
const auto envList = fullEnv.toStringList();
const auto it = m_headerPathsPerEnv.constFind(envList);
if (it != m_headerPathsPerEnv.cend())
return *it;
const auto mapper = [](const FilePath &p) { // TODO: Define functions for this.
return HeaderPath(p.toString(), HeaderPathType::BuiltIn);
};
return *m_headerPathsPerEnv.insert(envList,
transform<QVector>(fullEnv.pathListValue("INCLUDE"), mapper));
};
}
@@ -1787,7 +1789,7 @@ ClangClToolChain::BuiltInHeaderPathsRunner ClangClToolChain::createBuiltInHeader
{
{
QMutexLocker locker(&m_headerPathsMutex);
m_headerPaths.clear();
m_headerPathsPerEnv.clear();
}
return MsvcToolChain::createBuiltInHeaderPathsRunner(env);

View File

@@ -140,7 +140,7 @@ protected:
protected:
mutable QMutex m_headerPathsMutex;
mutable HeaderPaths m_headerPaths;
mutable QHash<QStringList, HeaderPaths> m_headerPathsPerEnv;
private:
void updateEnvironmentModifications(Utils::EnvironmentItems modifications);