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

View File

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