summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2019-07-05 16:58:07 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2019-07-12 09:13:42 +0000
commitf7520b7d991c34b3d8e3d1d726dc0b606f32c835 (patch)
tree08771fbd6e8a14a5bf8a7724ac624d0493f55d78
parent6e1595c1b36e8bb0abf5dfff55a60b56bc1c481b (diff)
downloadqt-creator-f7520b7d991c34b3d8e3d1d726dc0b606f32c835.tar.gz
Make the project managers tell the code model about include paths
... from the environment. Fixes: QTCREATORBUG-17985 Change-Id: I9b54e550121cfcc0684a6e173337d59d235c6107 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
-rw-r--r--src/libs/utils/environment.cpp9
-rw-r--r--src/libs/utils/environment.h1
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsproject.cpp2
-rw-r--r--src/plugins/baremetal/iarewtoolchain.cpp8
-rw-r--r--src/plugins/baremetal/iarewtoolchain.h5
-rw-r--r--src/plugins/baremetal/keiltoolchain.cpp8
-rw-r--r--src/plugins/baremetal/keiltoolchain.h6
-rw-r--r--src/plugins/baremetal/sdcctoolchain.cpp23
-rw-r--r--src/plugins/baremetal/sdcctoolchain.h6
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeproject.cpp2
-rw-r--r--src/plugins/cmakeprojectmanager/tealeafreader.cpp4
-rw-r--r--src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp2
-rw-r--r--src/plugins/cpptools/projectinfo.cpp9
-rw-r--r--src/plugins/cpptools/projectinfo.h3
-rw-r--r--src/plugins/genericprojectmanager/genericproject.cpp2
-rw-r--r--src/plugins/nim/project/nimtoolchain.cpp6
-rw-r--r--src/plugins/nim/project/nimtoolchain.h6
-rw-r--r--src/plugins/projectexplorer/customtoolchain.cpp8
-rw-r--r--src/plugins/projectexplorer/customtoolchain.h6
-rw-r--r--src/plugins/projectexplorer/gcctoolchain.cpp37
-rw-r--r--src/plugins/projectexplorer/gcctoolchain.h8
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.cpp27
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.h9
-rw-r--r--src/plugins/projectexplorer/project.cpp11
-rw-r--r--src/plugins/projectexplorer/project.h7
-rw-r--r--src/plugins/projectexplorer/toolchain.h14
-rw-r--r--src/plugins/projectexplorer/toolchaincache.h20
-rw-r--r--src/plugins/projectexplorer/toolchainsettingsaccessor.cpp4
-rw-r--r--src/plugins/qbsprojectmanager/qbsproject.cpp6
-rw-r--r--src/plugins/qbsprojectmanager/qbsproject.h1
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectparser.cpp1
-rw-r--r--src/plugins/qbsprojectmanager/qbsprojectparser.h2
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.cpp2
-rw-r--r--tests/auto/toolchaincache/tst_toolchaincache.cpp10
-rw-r--r--tests/unit/mockup/projectexplorer/toolchain.h6
35 files changed, 168 insertions, 113 deletions
diff --git a/src/libs/utils/environment.cpp b/src/libs/utils/environment.cpp
index 476df9c0f9..1d8498ef0d 100644
--- a/src/libs/utils/environment.cpp
+++ b/src/libs/utils/environment.cpp
@@ -275,9 +275,14 @@ FilePath Environment::searchInPath(const QString &executable,
FilePathList Environment::path() const
{
- const QStringList pathComponents = value("PATH")
+ return pathListValue("PATH");
+}
+
+FilePathList Environment::pathListValue(const QString &varName) const
+{
+ const QStringList pathComponents = value(varName)
.split(OsSpecificAspects::pathListSeparator(m_osType), QString::SkipEmptyParts);
- return Utils::transform(pathComponents, &FilePath::fromUserInput);
+ return transform(pathComponents, &FilePath::fromUserInput);
}
void Environment::modifySystemEnvironment(const EnvironmentItems &list)
diff --git a/src/libs/utils/environment.h b/src/libs/utils/environment.h
index 10ad75165e..73c883268e 100644
--- a/src/libs/utils/environment.h
+++ b/src/libs/utils/environment.h
@@ -68,6 +68,7 @@ public:
const PathFilter &func = PathFilter()) const;
FilePathList path() const;
+ FilePathList pathListValue(const QString &varName) const;
QStringList appendExeExtensions(const QString &executable) const;
bool isSameExecutable(const QString &exe1, const QString &exe2) const;
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp
index baafa22bfa..64629c3142 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp
+++ b/src/plugins/autotoolsprojectmanager/autotoolsproject.cpp
@@ -275,5 +275,5 @@ void AutotoolsProject::updateCppCodeModel()
rpp.setMacros(m_makefileParserThread->macros());
rpp.setFiles(m_files);
- m_cppCodeModelUpdater->update({this, kitInfo, {rpp}});
+ m_cppCodeModelUpdater->update({this, kitInfo, activeBuildEnvironment(), {rpp}});
}
diff --git a/src/plugins/baremetal/iarewtoolchain.cpp b/src/plugins/baremetal/iarewtoolchain.cpp
index 79ed42e14e..2f4faf0c8a 100644
--- a/src/plugins/baremetal/iarewtoolchain.cpp
+++ b/src/plugins/baremetal/iarewtoolchain.cpp
@@ -288,7 +288,8 @@ WarningFlags IarToolChain::warningFlags(const QStringList &cxxflags) const
return WarningFlags::Default;
}
-ToolChain::BuiltInHeaderPathsRunner IarToolChain::createBuiltInHeaderPathsRunner() const
+ToolChain::BuiltInHeaderPathsRunner IarToolChain::createBuiltInHeaderPathsRunner(
+ const Environment &) const
{
Environment env = Environment::systemEnvironment();
addToEnvironment(env);
@@ -312,9 +313,10 @@ ToolChain::BuiltInHeaderPathsRunner IarToolChain::createBuiltInHeaderPathsRunner
}
HeaderPaths IarToolChain::builtInHeaderPaths(const QStringList &cxxFlags,
- const FilePath &fileName) const
+ const FilePath &fileName,
+ const Environment &env) const
{
- return createBuiltInHeaderPathsRunner()(cxxFlags, fileName.toString(), "");
+ return createBuiltInHeaderPathsRunner(env)(cxxFlags, fileName.toString(), "");
}
void IarToolChain::addToEnvironment(Environment &env) const
diff --git a/src/plugins/baremetal/iarewtoolchain.h b/src/plugins/baremetal/iarewtoolchain.h
index 035c4aa70e..0ad3dd6ddc 100644
--- a/src/plugins/baremetal/iarewtoolchain.h
+++ b/src/plugins/baremetal/iarewtoolchain.h
@@ -63,9 +63,10 @@ public:
Utils::LanguageExtensions languageExtensions(const QStringList &cxxflags) const final;
ProjectExplorer::WarningFlags warningFlags(const QStringList &cxxflags) const final;
- BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner() const final;
+ BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(const Utils::Environment &) const final;
ProjectExplorer::HeaderPaths builtInHeaderPaths(const QStringList &cxxFlags,
- const Utils::FilePath &) const final;
+ const Utils::FilePath &,
+ const Utils::Environment &env) const final;
void addToEnvironment(Utils::Environment &env) const final;
ProjectExplorer::IOutputParser *outputParser() const final;
diff --git a/src/plugins/baremetal/keiltoolchain.cpp b/src/plugins/baremetal/keiltoolchain.cpp
index 3c4dea5179..c40d43faa3 100644
--- a/src/plugins/baremetal/keiltoolchain.cpp
+++ b/src/plugins/baremetal/keiltoolchain.cpp
@@ -298,7 +298,8 @@ WarningFlags KeilToolchain::warningFlags(const QStringList &cxxflags) const
return WarningFlags::Default;
}
-ToolChain::BuiltInHeaderPathsRunner KeilToolchain::createBuiltInHeaderPathsRunner() const
+ToolChain::BuiltInHeaderPathsRunner KeilToolchain::createBuiltInHeaderPathsRunner(
+ const Environment &) const
{
const Utils::FilePath compilerCommand = m_compilerCommand;
@@ -317,9 +318,10 @@ ToolChain::BuiltInHeaderPathsRunner KeilToolchain::createBuiltInHeaderPathsRunne
}
HeaderPaths KeilToolchain::builtInHeaderPaths(const QStringList &cxxFlags,
- const FilePath &fileName) const
+ const FilePath &fileName,
+ const Environment &env) const
{
- return createBuiltInHeaderPathsRunner()(cxxFlags, fileName.toString(), "");
+ return createBuiltInHeaderPathsRunner(env)(cxxFlags, fileName.toString(), "");
}
void KeilToolchain::addToEnvironment(Environment &env) const
diff --git a/src/plugins/baremetal/keiltoolchain.h b/src/plugins/baremetal/keiltoolchain.h
index 3ebfa8a5f1..b3ea5717b6 100644
--- a/src/plugins/baremetal/keiltoolchain.h
+++ b/src/plugins/baremetal/keiltoolchain.h
@@ -63,9 +63,11 @@ public:
Utils::LanguageExtensions languageExtensions(const QStringList &cxxflags) const final;
ProjectExplorer::WarningFlags warningFlags(const QStringList &cxxflags) const final;
- BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner() const final;
+ BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(
+ const Utils::Environment &) const final;
ProjectExplorer::HeaderPaths builtInHeaderPaths(const QStringList &cxxFlags,
- const Utils::FilePath &) const final;
+ const Utils::FilePath &,
+ const Utils::Environment &env) const final;
void addToEnvironment(Utils::Environment &env) const final;
ProjectExplorer::IOutputParser *outputParser() const final;
diff --git a/src/plugins/baremetal/sdcctoolchain.cpp b/src/plugins/baremetal/sdcctoolchain.cpp
index 9595bdeede..ebaa4d1093 100644
--- a/src/plugins/baremetal/sdcctoolchain.cpp
+++ b/src/plugins/baremetal/sdcctoolchain.cpp
@@ -274,34 +274,25 @@ WarningFlags SdccToolChain::warningFlags(const QStringList &cxxflags) const
return WarningFlags::Default;
}
-ToolChain::BuiltInHeaderPathsRunner SdccToolChain::createBuiltInHeaderPathsRunner() const
+ToolChain::BuiltInHeaderPathsRunner SdccToolChain::createBuiltInHeaderPathsRunner(
+ const Environment &) const
{
Environment env = Environment::systemEnvironment();
addToEnvironment(env);
const Utils::FilePath compilerCommand = m_compilerCommand;
- const Core::Id languageId = language();
const Abi abi = m_targetAbi;
- HeaderPathsCache headerPaths = headerPathsCache();
-
- return [env, compilerCommand, headerPaths, languageId, abi](const QStringList &flags,
- const QString &fileName,
- const QString &) {
- Q_UNUSED(flags)
- Q_UNUSED(fileName)
-
- const HeaderPaths paths = dumpHeaderPaths(compilerCommand, env.toStringList(), abi);
- headerPaths->insert({}, paths);
-
- return paths;
+ return [env, compilerCommand, abi](const QStringList &, const QString &, const QString &) {
+ return dumpHeaderPaths(compilerCommand, env.toStringList(), abi);
};
}
HeaderPaths SdccToolChain::builtInHeaderPaths(const QStringList &cxxFlags,
- const FilePath &fileName) const
+ const FilePath &fileName,
+ const Environment &env) const
{
- return createBuiltInHeaderPathsRunner()(cxxFlags, fileName.toString(), "");
+ return createBuiltInHeaderPathsRunner(env)(cxxFlags, fileName.toString(), "");
}
void SdccToolChain::addToEnvironment(Environment &env) const
diff --git a/src/plugins/baremetal/sdcctoolchain.h b/src/plugins/baremetal/sdcctoolchain.h
index 5bd4d1c428..58fd92e0d5 100644
--- a/src/plugins/baremetal/sdcctoolchain.h
+++ b/src/plugins/baremetal/sdcctoolchain.h
@@ -63,9 +63,11 @@ public:
Utils::LanguageExtensions languageExtensions(const QStringList &cxxflags) const final;
ProjectExplorer::WarningFlags warningFlags(const QStringList &cxxflags) const final;
- BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner() const final;
+ BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(
+ const Utils::Environment &) const final;
ProjectExplorer::HeaderPaths builtInHeaderPaths(const QStringList &cxxFlags,
- const Utils::FilePath &) const final;
+ const Utils::FilePath &,
+ const Utils::Environment &env) const final;
void addToEnvironment(Utils::Environment &env) const final;
ProjectExplorer::IOutputParser *outputParser() const final;
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index 5544965ece..512e0124de 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -405,7 +405,7 @@ void CMakeProject::updateProjectData(CMakeBuildConfiguration *bc)
rpp.setFlagsForC({kitInfo.cToolChain, rpp.flagsForC.commandLineFlags});
}
- m_cppCodeModelUpdater->update({this, kitInfo, rpps});
+ m_cppCodeModelUpdater->update({this, kitInfo, activeBuildEnvironment(), rpps});
}
{
TraceTimer qmlCodemodelTimer(" qml codemodel");
diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.cpp b/src/plugins/cmakeprojectmanager/tealeafreader.cpp
index a98d5b1eef..dad85e78bf 100644
--- a/src/plugins/cmakeprojectmanager/tealeafreader.cpp
+++ b/src/plugins/cmakeprojectmanager/tealeafreader.cpp
@@ -311,8 +311,10 @@ static void processCMakeIncludes(const CMakeBuildTarget &cbt, const ToolChain *t
if (!tc)
return;
- foreach (const HeaderPath &hp, tc->builtInHeaderPaths(flags, sysroot))
+ foreach (const HeaderPath &hp, tc->builtInHeaderPaths(flags, sysroot,
+ Environment::systemEnvironment())) {
tcIncludes.insert(FilePath::fromString(hp.path));
+ }
foreach (const FilePath &i, cbt.includeFiles) {
if (!tcIncludes.contains(i))
includePaths.append(i.toString());
diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp
index c1c9ddcaa3..ff08ee7918 100644
--- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp
+++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp
@@ -390,7 +390,7 @@ void CompilationDatabaseProject::buildTreeAndProjectParts()
setRootProjectNode(std::move(root));
- m_cppCodeModelUpdater->update({this, kitInfo, rpps});
+ m_cppCodeModelUpdater->update({this, kitInfo, activeBuildEnvironment(), rpps});
}
CompilationDatabaseProject::CompilationDatabaseProject(const Utils::FilePath &projectFile)
diff --git a/src/plugins/cpptools/projectinfo.cpp b/src/plugins/cpptools/projectinfo.cpp
index 1cc5515eb9..a69c8dd631 100644
--- a/src/plugins/cpptools/projectinfo.cpp
+++ b/src/plugins/cpptools/projectinfo.cpp
@@ -35,7 +35,7 @@
namespace CppTools {
ToolChainInfo::ToolChainInfo(const ProjectExplorer::ToolChain *toolChain,
- const QString &sysRootPath)
+ const QString &sysRootPath, const Utils::Environment &env)
{
if (toolChain) {
// Keep the following cheap/non-blocking for the ui thread...
@@ -49,20 +49,21 @@ ToolChainInfo::ToolChainInfo(const ProjectExplorer::ToolChain *toolChain,
// ...and save the potentially expensive operations for later so that
// they can be run from a worker thread.
this->sysRootPath = sysRootPath;
- headerPathsRunner = toolChain->createBuiltInHeaderPathsRunner();
+ headerPathsRunner = toolChain->createBuiltInHeaderPathsRunner(env);
macroInspectionRunner = toolChain->createMacroInspectionRunner();
}
}
ProjectUpdateInfo::ProjectUpdateInfo(ProjectExplorer::Project *project,
const KitInfo &kitInfo,
+ const Utils::Environment &env,
const RawProjectParts &rawProjectParts)
: project(project)
, rawProjectParts(rawProjectParts)
, cToolChain(kitInfo.cToolChain)
, cxxToolChain(kitInfo.cxxToolChain)
- , cToolChainInfo(ToolChainInfo(cToolChain, kitInfo.sysRootPath))
- , cxxToolChainInfo(ToolChainInfo(cxxToolChain, kitInfo.sysRootPath))
+ , cToolChainInfo(ToolChainInfo(cToolChain, kitInfo.sysRootPath, env))
+ , cxxToolChainInfo(ToolChainInfo(cxxToolChain, kitInfo.sysRootPath, env))
{
}
diff --git a/src/plugins/cpptools/projectinfo.h b/src/plugins/cpptools/projectinfo.h
index c934bda2d5..f8aaebefec 100644
--- a/src/plugins/cpptools/projectinfo.h
+++ b/src/plugins/cpptools/projectinfo.h
@@ -47,7 +47,7 @@ class ToolChainInfo
public:
ToolChainInfo() = default;
ToolChainInfo(const ProjectExplorer::ToolChain *toolChain,
- const QString &sysRootPath);
+ const QString &sysRootPath, const Utils::Environment &env);
bool isValid() const { return type.isValid(); }
@@ -69,6 +69,7 @@ public:
ProjectUpdateInfo() = default;
ProjectUpdateInfo(ProjectExplorer::Project *project,
const KitInfo &kitInfo,
+ const Utils::Environment &env,
const RawProjectParts &rawProjectParts);
bool isValid() const { return project && !rawProjectParts.isEmpty(); }
diff --git a/src/plugins/genericprojectmanager/genericproject.cpp b/src/plugins/genericprojectmanager/genericproject.cpp
index 9b8fbc9e12..f66d7298ba 100644
--- a/src/plugins/genericprojectmanager/genericproject.cpp
+++ b/src/plugins/genericprojectmanager/genericproject.cpp
@@ -502,7 +502,7 @@ void GenericProject::refreshCppCodeModel()
rpp.setFlagsForC({nullptr, m_cflags});
rpp.setFiles(m_files);
- m_cppCodeModelUpdater->update({this, kitInfo, {rpp}});
+ m_cppCodeModelUpdater->update({this, kitInfo, activeBuildEnvironment(), {rpp}});
}
void GenericProject::updateDeploymentData()
diff --git a/src/plugins/nim/project/nimtoolchain.cpp b/src/plugins/nim/project/nimtoolchain.cpp
index b2470e84b2..6a922f9553 100644
--- a/src/plugins/nim/project/nimtoolchain.cpp
+++ b/src/plugins/nim/project/nimtoolchain.cpp
@@ -85,12 +85,14 @@ WarningFlags NimToolChain::warningFlags(const QStringList &) const
return WarningFlags::NoWarnings;
}
-ToolChain::BuiltInHeaderPathsRunner NimToolChain::createBuiltInHeaderPathsRunner() const
+ToolChain::BuiltInHeaderPathsRunner NimToolChain::createBuiltInHeaderPathsRunner(
+ const Environment &) const
{
return ToolChain::BuiltInHeaderPathsRunner();
}
-HeaderPaths NimToolChain::builtInHeaderPaths(const QStringList &, const FilePath &) const
+HeaderPaths NimToolChain::builtInHeaderPaths(const QStringList &, const FilePath &,
+ const Environment &) const
{
return {};
}
diff --git a/src/plugins/nim/project/nimtoolchain.h b/src/plugins/nim/project/nimtoolchain.h
index 5bfb6bd2dd..4b9f6c9cd7 100644
--- a/src/plugins/nim/project/nimtoolchain.h
+++ b/src/plugins/nim/project/nimtoolchain.h
@@ -44,9 +44,11 @@ public:
Utils::LanguageExtensions languageExtensions(const QStringList &flags) const final;
ProjectExplorer::WarningFlags warningFlags(const QStringList &flags) const final;
- BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner() const override;
+ BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(
+ const Utils::Environment &) const override;
ProjectExplorer::HeaderPaths builtInHeaderPaths(const QStringList &flags,
- const Utils::FilePath &sysRoot) const final;
+ const Utils::FilePath &sysRoot,
+ const Utils::Environment &) const final;
void addToEnvironment(Utils::Environment &env) const final;
Utils::FilePath makeCommand(const Utils::Environment &env) const final;
Utils::FilePath compilerCommand() const final;
diff --git a/src/plugins/projectexplorer/customtoolchain.cpp b/src/plugins/projectexplorer/customtoolchain.cpp
index 7806e4c8bf..d86bbff0ca 100644
--- a/src/plugins/projectexplorer/customtoolchain.cpp
+++ b/src/plugins/projectexplorer/customtoolchain.cpp
@@ -155,7 +155,8 @@ void CustomToolChain::setPredefinedMacros(const Macros &macros)
toolChainUpdated();
}
-ToolChain::BuiltInHeaderPathsRunner CustomToolChain::createBuiltInHeaderPathsRunner() const
+ToolChain::BuiltInHeaderPathsRunner CustomToolChain::createBuiltInHeaderPathsRunner(
+ const Environment &) const
{
const HeaderPaths builtInHeaderPaths = m_builtInHeaderPaths;
@@ -173,9 +174,10 @@ ToolChain::BuiltInHeaderPathsRunner CustomToolChain::createBuiltInHeaderPathsRun
}
HeaderPaths CustomToolChain::builtInHeaderPaths(const QStringList &cxxFlags,
- const FilePath &fileName) const
+ const FilePath &fileName,
+ const Environment &env) const
{
- return createBuiltInHeaderPathsRunner()(cxxFlags, fileName.toString(), "");
+ return createBuiltInHeaderPathsRunner(env)(cxxFlags, fileName.toString(), "");
}
void CustomToolChain::addToEnvironment(Environment &env) const
diff --git a/src/plugins/projectexplorer/customtoolchain.h b/src/plugins/projectexplorer/customtoolchain.h
index 04078482f1..d2a5df2926 100644
--- a/src/plugins/projectexplorer/customtoolchain.h
+++ b/src/plugins/projectexplorer/customtoolchain.h
@@ -77,9 +77,11 @@ public:
const Macros &rawPredefinedMacros() const;
void setPredefinedMacros(const Macros &macros);
- BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner() const override;
+ BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(
+ const Utils::Environment &) const override;
HeaderPaths builtInHeaderPaths(const QStringList &cxxFlags,
- const Utils::FilePath &) const override;
+ const Utils::FilePath &,
+ const Utils::Environment &env) const override;
void addToEnvironment(Utils::Environment &env) const override;
QStringList suggestedMkspecList() const override;
IOutputParser *outputParser() const override;
diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp
index 97a2645ec6..2072994af2 100644
--- a/src/plugins/projectexplorer/gcctoolchain.cpp
+++ b/src/plugins/projectexplorer/gcctoolchain.cpp
@@ -574,7 +574,7 @@ HeaderPaths GccToolChain::builtInHeaderPaths(const Utils::Environment &env,
if (!originalTargetTriple.isEmpty())
arguments << "-target" << originalTargetTriple;
- const Utils::optional<HeaderPaths> cachedPaths = headerCache->check(arguments);
+ const Utils::optional<HeaderPaths> cachedPaths = headerCache->check(qMakePair(env, arguments));
if (cachedPaths)
return cachedPaths.value();
@@ -582,7 +582,7 @@ HeaderPaths GccToolChain::builtInHeaderPaths(const Utils::Environment &env,
arguments,
env.toStringList());
extraHeaderPathsFunction(paths);
- headerCache->insert(arguments, paths);
+ headerCache->insert(qMakePair(env, arguments), paths);
qCDebug(gccLog) << "Reporting header paths to code model:";
for (const HeaderPath &hp : paths) {
@@ -594,14 +594,15 @@ HeaderPaths GccToolChain::builtInHeaderPaths(const Utils::Environment &env,
return paths;
}
-ToolChain::BuiltInHeaderPathsRunner GccToolChain::createBuiltInHeaderPathsRunner() const
+ToolChain::BuiltInHeaderPathsRunner GccToolChain::createBuiltInHeaderPathsRunner(
+ const Environment &env) const
{
// Using a clean environment breaks ccache/distcc/etc.
- Environment env = Environment::systemEnvironment();
- addToEnvironment(env);
+ Environment fullEnv = env;
+ addToEnvironment(fullEnv);
// This runner must be thread-safe!
- return [env,
+ return [fullEnv,
compilerCommand = m_compilerCommand,
platformCodeGenFlags = m_platformCodeGenFlags,
reinterpretOptions = m_optionsReinterpreter,
@@ -610,7 +611,7 @@ ToolChain::BuiltInHeaderPathsRunner GccToolChain::createBuiltInHeaderPathsRunner
extraHeaderPathsFunction = m_extraHeaderPathsFunction](const QStringList &flags,
const QString &sysRoot,
const QString &) {
- return builtInHeaderPaths(env,
+ return builtInHeaderPaths(fullEnv,
compilerCommand,
platformCodeGenFlags,
reinterpretOptions,
@@ -624,12 +625,13 @@ ToolChain::BuiltInHeaderPathsRunner GccToolChain::createBuiltInHeaderPathsRunner
}
HeaderPaths GccToolChain::builtInHeaderPaths(const QStringList &flags,
- const FilePath &sysRootPath) const
+ const FilePath &sysRootPath,
+ const Environment &env) const
{
- return createBuiltInHeaderPathsRunner()(flags,
- sysRootPath.isEmpty() ? sysRoot()
- : sysRootPath.toString(),
- originalTargetTriple());
+ return createBuiltInHeaderPathsRunner(env)(flags,
+ sysRootPath.isEmpty() ? sysRoot()
+ : sysRootPath.toString(),
+ originalTargetTriple());
}
void GccToolChain::addCommandPathToEnvironment(const FilePath &command, Environment &env)
@@ -1391,14 +1393,15 @@ QString ClangToolChain::sysRoot() const
return mingwCompiler.parentDir().parentDir().toString();
}
-ToolChain::BuiltInHeaderPathsRunner ClangToolChain::createBuiltInHeaderPathsRunner() const
+ToolChain::BuiltInHeaderPathsRunner ClangToolChain::createBuiltInHeaderPathsRunner(
+ const Environment &env) const
{
// Using a clean environment breaks ccache/distcc/etc.
- Environment env = Environment::systemEnvironment();
- addToEnvironment(env);
+ Environment fullEnv = env;
+ addToEnvironment(fullEnv);
// This runner must be thread-safe!
- return [env,
+ return [fullEnv,
compilerCommand = m_compilerCommand,
platformCodeGenFlags = m_platformCodeGenFlags,
reinterpretOptions = m_optionsReinterpreter,
@@ -1407,7 +1410,7 @@ ToolChain::BuiltInHeaderPathsRunner ClangToolChain::createBuiltInHeaderPathsRunn
extraHeaderPathsFunction = m_extraHeaderPathsFunction](const QStringList &flags,
const QString &sysRoot,
const QString &target) {
- return builtInHeaderPaths(env,
+ return builtInHeaderPaths(fullEnv,
compilerCommand,
platformCodeGenFlags,
reinterpretOptions,
diff --git a/src/plugins/projectexplorer/gcctoolchain.h b/src/plugins/projectexplorer/gcctoolchain.h
index b2651af487..5d46f949f9 100644
--- a/src/plugins/projectexplorer/gcctoolchain.h
+++ b/src/plugins/projectexplorer/gcctoolchain.h
@@ -83,9 +83,10 @@ public:
MacroInspectionRunner createMacroInspectionRunner() const override;
Macros predefinedMacros(const QStringList &cxxflags) const override;
- BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner() const override;
+ BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(const Utils::Environment &env) const override;
HeaderPaths builtInHeaderPaths(const QStringList &flags,
- const Utils::FilePath &sysRootPath) const override;
+ const Utils::FilePath &sysRootPath,
+ const Utils::Environment &env) const override;
void addToEnvironment(Utils::Environment &env) const override;
Utils::FilePath makeCommand(const Utils::Environment &environment) const override;
@@ -225,7 +226,8 @@ public:
QString originalTargetTriple() const override;
QString sysRoot() const override;
- BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner() const override;
+ BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(
+ const Utils::Environment &env) const override;
std::unique_ptr<ToolChainConfigWidget> createConfigurationWidget() override;
diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp
index 60cd9a6e21..a9492c95a5 100644
--- a/src/plugins/projectexplorer/msvctoolchain.cpp
+++ b/src/plugins/projectexplorer/msvctoolchain.cpp
@@ -1119,27 +1119,29 @@ WarningFlags MsvcToolChain::warningFlags(const QStringList &cflags) const
return flags;
}
-ToolChain::BuiltInHeaderPathsRunner MsvcToolChain::createBuiltInHeaderPathsRunner() const
+ToolChain::BuiltInHeaderPathsRunner MsvcToolChain::createBuiltInHeaderPathsRunner(
+ const Environment &env) const
{
- Utils::Environment env(m_lastEnvironment);
- addToEnvironment(env);
+ Utils::Environment fullEnv = env;
+ addToEnvironment(fullEnv);
- return [this, env](const QStringList &, const QString &, const QString &) {
+ return [this, fullEnv](const QStringList &, const QString &, const QString &) {
QMutexLocker locker(&m_headerPathsMutex);
if (m_headerPaths.isEmpty()) {
- foreach (const QString &path,
- env.value(QLatin1String("INCLUDE")).split(QLatin1Char(';'))) {
- m_headerPaths.append({path, HeaderPathType::BuiltIn});
- }
+ m_headerPaths = transform<QVector>(fullEnv.pathListValue("INCLUDE"),
+ [](const FilePath &p) {
+ return HeaderPath(p.toString(), HeaderPathType::BuiltIn);
+ });
}
return m_headerPaths;
};
}
HeaderPaths MsvcToolChain::builtInHeaderPaths(const QStringList &cxxflags,
- const Utils::FilePath &sysRoot) const
+ const Utils::FilePath &sysRoot,
+ const Environment &env) const
{
- return createBuiltInHeaderPathsRunner()(cxxflags, sysRoot.toString(), "");
+ return createBuiltInHeaderPathsRunner(env)(cxxflags, sysRoot.toString(), "");
}
void MsvcToolChain::addToEnvironment(Utils::Environment &env) const
@@ -1750,14 +1752,15 @@ Utils::LanguageVersion ClangClToolChain::msvcLanguageVersion(const QStringList &
return MsvcToolChain::msvcLanguageVersion(cxxflags, language, macros);
}
-ClangClToolChain::BuiltInHeaderPathsRunner ClangClToolChain::createBuiltInHeaderPathsRunner() const
+ClangClToolChain::BuiltInHeaderPathsRunner ClangClToolChain::createBuiltInHeaderPathsRunner(
+ const Environment &env) const
{
{
QMutexLocker locker(&m_headerPathsMutex);
m_headerPaths.clear();
}
- return MsvcToolChain::createBuiltInHeaderPathsRunner();
+ return MsvcToolChain::createBuiltInHeaderPathsRunner(env);
}
// --------------------------------------------------------------------------
diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h
index 89737807e2..80d8db723c 100644
--- a/src/plugins/projectexplorer/msvctoolchain.h
+++ b/src/plugins/projectexplorer/msvctoolchain.h
@@ -79,9 +79,11 @@ public:
Macros predefinedMacros(const QStringList &cxxflags) const override;
Utils::LanguageExtensions languageExtensions(const QStringList &cxxflags) const override;
WarningFlags warningFlags(const QStringList &cflags) const override;
- BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner() const override;
+ BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(
+ const Utils::Environment &env) const override;
HeaderPaths builtInHeaderPaths(const QStringList &cxxflags,
- const Utils::FilePath &sysRoot) const override;
+ const Utils::FilePath &sysRoot,
+ const Utils::Environment &env) const override;
void addToEnvironment(Utils::Environment &env) const override;
Utils::FilePath makeCommand(const Utils::Environment &environment) const override;
@@ -175,7 +177,8 @@ public:
QVariantMap toMap() const override;
bool fromMap(const QVariantMap &data) override;
std::unique_ptr<ToolChainConfigWidget> createConfigurationWidget() override;
- BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner() const override;
+ BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(
+ const Utils::Environment &env) const override;
const QList<MsvcToolChain *> &msvcToolchains() const;
QString clangPath() const { return m_clangPath; }
diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp
index 25735971a9..721d392d13 100644
--- a/src/plugins/projectexplorer/project.cpp
+++ b/src/plugins/projectexplorer/project.cpp
@@ -48,8 +48,9 @@
#include <projectexplorer/kitmanager.h>
#include <projectexplorer/projecttree.h>
-#include <utils/pointeralgorithm.h>
+#include <utils/environment.h>
#include <utils/macroexpander.h>
+#include <utils/pointeralgorithm.h>
#include <utils/qtcassert.h>
#include <QFileDialog>
@@ -811,6 +812,14 @@ Task Project::createProjectTask(Task::TaskType type, const QString &description)
return Task(type, description, Utils::FilePath(), -1, Core::Id());
}
+Utils::Environment Project::activeBuildEnvironment() const
+{
+ const BuildConfiguration * const buildConfiguration = activeTarget()
+ ? activeTarget()->activeBuildConfiguration() : nullptr;
+ return buildConfiguration ? buildConfiguration->environment()
+ : Utils::Environment::systemEnvironment();
+}
+
Core::Context Project::projectContext() const
{
return Core::Context(d->m_id);
diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h
index 26e02c9b37..f736a90dfc 100644
--- a/src/plugins/projectexplorer/project.h
+++ b/src/plugins/projectexplorer/project.h
@@ -42,7 +42,10 @@
#include <functional>
namespace Core { class Context; }
-namespace Utils { class MacroExpander; }
+namespace Utils {
+class Environment;
+class MacroExpander;
+}
namespace ProjectExplorer {
@@ -263,6 +266,8 @@ protected:
static ProjectExplorer::Task createProjectTask(ProjectExplorer::Task::TaskType type,
const QString &description);
+ Utils::Environment activeBuildEnvironment() const;
+
private:
void handleSubTreeChanged(FolderNode *node);
void setActiveTarget(Target *target);
diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h
index dce528bc02..4c8b3061ab 100644
--- a/src/plugins/projectexplorer/toolchain.h
+++ b/src/plugins/projectexplorer/toolchain.h
@@ -37,17 +37,16 @@
#include <coreplugin/id.h>
#include <utils/cpplanguage_details.h>
+#include <utils/environment.h>
#include <QObject>
#include <QSet>
-#include <QString>
+#include <QStringList>
#include <QVariantMap>
#include <functional>
#include <memory>
-namespace Utils { class Environment; }
-
namespace ProjectExplorer {
namespace Internal { class ToolChainPrivate; }
@@ -129,8 +128,8 @@ public:
Utils::LanguageVersion languageVersion;
};
- using MacrosCache = std::shared_ptr<Cache<ToolChain::MacroInspectionReport, 64>>;
- using HeaderPathsCache = std::shared_ptr<Cache<HeaderPaths>>;
+ using MacrosCache = std::shared_ptr<Cache<QStringList, ToolChain::MacroInspectionReport, 64>>;
+ using HeaderPathsCache = std::shared_ptr<Cache<QPair<Utils::Environment, QStringList>, HeaderPaths>>;
// A MacroInspectionRunner is created in the ui thread and runs in another thread.
using MacroInspectionRunner = std::function<MacroInspectionReport(const QStringList &cxxflags)>;
@@ -140,9 +139,10 @@ public:
// A BuiltInHeaderPathsRunner is created in the ui thread and runs in another thread.
using BuiltInHeaderPathsRunner = std::function<HeaderPaths(
const QStringList &cxxflags, const QString &sysRoot, const QString &originalTargetTriple)>;
- virtual BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner() const = 0;
+ virtual BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(const Utils::Environment &env) const = 0;
virtual HeaderPaths builtInHeaderPaths(const QStringList &cxxflags,
- const Utils::FilePath &sysRoot) const = 0;
+ const Utils::FilePath &sysRoot,
+ const Utils::Environment &env) const = 0;
virtual void addToEnvironment(Utils::Environment &env) const = 0;
virtual Utils::FilePath makeCommand(const Utils::Environment &env) const = 0;
diff --git a/src/plugins/projectexplorer/toolchaincache.h b/src/plugins/projectexplorer/toolchaincache.h
index 154c09162f..4f69494d09 100644
--- a/src/plugins/projectexplorer/toolchaincache.h
+++ b/src/plugins/projectexplorer/toolchaincache.h
@@ -27,14 +27,14 @@
#include <QMutex>
#include <QMutexLocker>
-#include <QStringList>
+#include <QPair>
#include <QVector>
#include <utils/optional.h>
namespace ProjectExplorer {
-template<class T, int Size = 16>
+template<class K, class T, int Size = 16>
class Cache
{
public:
@@ -61,14 +61,14 @@ public:
return *this;
}
- void insert(const QStringList &compilerArguments, const T &values)
+ void insert(const K &key, const T &values)
{
CacheItem runResults;
- runResults.first = compilerArguments;
+ runResults.first = key;
runResults.second = values;
QMutexLocker locker(&m_mutex);
- if (!checkImpl(compilerArguments)) {
+ if (!checkImpl(key)) {
if (m_cache.size() < Size) {
m_cache.push_back(runResults);
} else {
@@ -78,10 +78,10 @@ public:
}
}
- Utils::optional<T> check(const QStringList &compilerArguments)
+ Utils::optional<T> check(const K &key)
{
QMutexLocker locker(&m_mutex);
- return checkImpl(compilerArguments);
+ return checkImpl(key);
}
void invalidate()
@@ -91,17 +91,17 @@ public:
}
private:
- Utils::optional<T> checkImpl(const QStringList &compilerArguments)
+ Utils::optional<T> checkImpl(const K &key)
{
auto it = std::stable_partition(m_cache.begin(), m_cache.end(), [&](const CacheItem &ci) {
- return ci.first != compilerArguments;
+ return ci.first != key;
});
if (it != m_cache.end())
return m_cache.back().second;
return {};
}
- using CacheItem = QPair<QStringList, T>;
+ using CacheItem = QPair<K, T>;
QMutex m_mutex;
QVector<CacheItem> m_cache;
diff --git a/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp b/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp
index 64d458e2e5..707e88bc10 100644
--- a/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp
+++ b/src/plugins/projectexplorer/toolchainsettingsaccessor.cpp
@@ -318,8 +318,8 @@ public:
Macros predefinedMacros(const QStringList &cxxflags) const override { Q_UNUSED(cxxflags); return Macros(); }
LanguageExtensions languageExtensions(const QStringList &cxxflags) const override { Q_UNUSED(cxxflags); return LanguageExtension::None; }
WarningFlags warningFlags(const QStringList &cflags) const override { Q_UNUSED(cflags); return WarningFlags::NoWarnings; }
- BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner() const override { return BuiltInHeaderPathsRunner(); }
- HeaderPaths builtInHeaderPaths(const QStringList &cxxflags, const FilePath &sysRoot) const override
+ BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(const Utils::Environment &) const override { return BuiltInHeaderPathsRunner(); }
+ HeaderPaths builtInHeaderPaths(const QStringList &cxxflags, const FilePath &sysRoot, const Utils::Environment &) const override
{ Q_UNUSED(cxxflags); Q_UNUSED(sysRoot); return {}; }
void addToEnvironment(Environment &env) const override { Q_UNUSED(env); }
FilePath makeCommand(const Environment &) const override { return FilePath::fromString("make"); }
diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp
index a0291bfe67..a634aaf3ca 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.cpp
+++ b/src/plugins/qbsprojectmanager/qbsproject.cpp
@@ -533,6 +533,8 @@ void QbsProject::handleQbsParsingDone(bool success)
m_qbsProject = m_qbsProjectParser->qbsProject();
m_qbsProjects.insert(activeTarget(), m_qbsProject);
bool dataChanged = false;
+ bool envChanged = m_lastParseEnv != m_qbsProjectParser->environment();
+ m_lastParseEnv = m_qbsProjectParser->environment();
if (success) {
QTC_ASSERT(m_qbsProject.isValid(), return);
const qbs::ProjectData &projectData = m_qbsProject.projectData();
@@ -552,6 +554,8 @@ void QbsProject::handleQbsParsingDone(bool success)
if (dataChanged)
updateAfterParse();
+ else if (envChanged)
+ updateCppCodeModel();
emitParsingFinished(success);
}
@@ -1085,7 +1089,7 @@ void QbsProject::updateCppCodeModel()
}
CppTools::GeneratedCodeModelSupport::update(m_extraCompilers);
- m_cppCodeModelUpdater->update({this, kitInfo, rpps});
+ m_cppCodeModelUpdater->update({this, kitInfo, activeBuildEnvironment(), rpps});
}
void QbsProject::updateQmlJsCodeModel()
diff --git a/src/plugins/qbsprojectmanager/qbsproject.h b/src/plugins/qbsprojectmanager/qbsproject.h
index bd59b03a59..fba99a5f90 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.h
+++ b/src/plugins/qbsprojectmanager/qbsproject.h
@@ -144,6 +144,7 @@ private:
QHash<ProjectExplorer::Target *, qbs::Project> m_qbsProjects;
qbs::Project m_qbsProject; // for activeTarget()
qbs::ProjectData m_projectData; // Cached m_qbsProject.projectData()
+ Utils::Environment m_lastParseEnv;
QSet<Core::IDocument *> m_qbsDocuments;
QbsProjectParser *m_qbsProjectParser = nullptr;
diff --git a/src/plugins/qbsprojectmanager/qbsprojectparser.cpp b/src/plugins/qbsprojectmanager/qbsprojectparser.cpp
index 3d67a087e3..ce3ceb893e 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectparser.cpp
+++ b/src/plugins/qbsprojectmanager/qbsprojectparser.cpp
@@ -82,6 +82,7 @@ void QbsProjectParser::parse(const QVariantMap &config, const Environment &env,
QTC_ASSERT(!dir.isEmpty(), return);
m_currentProgressBase = 0;
+ m_environment = env;
qbs::SetupProjectParameters params;
QVariantMap userConfig = config;
diff --git a/src/plugins/qbsprojectmanager/qbsprojectparser.h b/src/plugins/qbsprojectmanager/qbsprojectparser.h
index 4c54d08b3b..37b9e5f6d2 100644
--- a/src/plugins/qbsprojectmanager/qbsprojectparser.h
+++ b/src/plugins/qbsprojectmanager/qbsprojectparser.h
@@ -50,6 +50,7 @@ public:
const QString &configName);
void startRuleExecution();
void cancel();
+ Utils::Environment environment() const { return m_environment; }
qbs::Project qbsProject() const;
qbs::ErrorInfo error();
@@ -69,6 +70,7 @@ private:
void handleRuleExecutionDone();
+ Utils::Environment m_environment;
QString m_projectFilePath;
qbs::SetupProjectJob *m_qbsSetupProjectJob = nullptr;
qbs::BuildJob *m_ruleExecutionJob = nullptr;
diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
index 205782b1df..4d987de005 100644
--- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
@@ -287,7 +287,7 @@ void QmakeProject::updateCppCodeModel()
}
CppTools::GeneratedCodeModelSupport::update(generators);
- m_cppCodeModelUpdater->update({this, kitInfo, rpps});
+ m_cppCodeModelUpdater->update({this, kitInfo, activeBuildEnvironment(), rpps});
}
void QmakeProject::updateQmlJSCodeModel()
diff --git a/tests/auto/toolchaincache/tst_toolchaincache.cpp b/tests/auto/toolchaincache/tst_toolchaincache.cpp
index 10226802c3..3e4da445ac 100644
--- a/tests/auto/toolchaincache/tst_toolchaincache.cpp
+++ b/tests/auto/toolchaincache/tst_toolchaincache.cpp
@@ -46,7 +46,7 @@ void tst_ToolChainCache::insertOne()
{
const QStringList key1 = {"one"};
const QString value1 = "value1";
- ProjectExplorer::Cache<QString, 2> cache;
+ ProjectExplorer::Cache<QStringList, QString, 2> cache;
cache.insert(key1, value1);
@@ -59,7 +59,7 @@ void tst_ToolChainCache::insertOneOne()
{
const QStringList key1 = {"one"};
const QString value1 = "value1";
- ProjectExplorer::Cache<QString, 2> cache;
+ ProjectExplorer::Cache<QStringList, QString, 2> cache;
cache.insert(key1, value1);
cache.insert(key1, value1);
@@ -75,7 +75,7 @@ void tst_ToolChainCache::insertOneTwo()
const QString value1 = "value1";
const QStringList key2 = {"two"};
const QString value2 = "value2";
- ProjectExplorer::Cache<QString, 2> cache;
+ ProjectExplorer::Cache<QStringList, QString, 2> cache;
cache.insert(key1, value1);
cache.insert(key2, value2);
@@ -95,7 +95,7 @@ void tst_ToolChainCache::insertOneTwoThree()
const QString value2 = "value2";
const QStringList key3 = {"three"};
const QString value3 = "value3";
- ProjectExplorer::Cache<QString, 2> cache;
+ ProjectExplorer::Cache<QStringList, QString, 2> cache;
cache.insert(key1, value1);
cache.insert(key2, value2);
@@ -117,7 +117,7 @@ void tst_ToolChainCache::insertOneTwoOneThree()
const QString value2 = "value2";
const QStringList key3 = {"three"};
const QString value3 = "value3";
- ProjectExplorer::Cache<QString, 2> cache;
+ ProjectExplorer::Cache<QStringList, QString, 2> cache;
cache.insert(key1, value1);
cache.insert(key2, value2);
diff --git a/tests/unit/mockup/projectexplorer/toolchain.h b/tests/unit/mockup/projectexplorer/toolchain.h
index 925b0a2ae8..022520cec0 100644
--- a/tests/unit/mockup/projectexplorer/toolchain.h
+++ b/tests/unit/mockup/projectexplorer/toolchain.h
@@ -33,6 +33,8 @@
#include <functional>
+namespace Utils { class Environment; }
+
namespace ProjectExplorer {
class ToolChain
@@ -45,7 +47,9 @@ public:
using BuiltInHeaderPathsRunner = std::function<HeaderPaths(
const QStringList &cxxflags, const QString &sysRoot, const QString &originalTargetTriple)>;
- virtual BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner() const { return BuiltInHeaderPathsRunner(); }
+ virtual BuiltInHeaderPathsRunner createBuiltInHeaderPathsRunner(const Utils::Environment &env) const {
+ return BuiltInHeaderPathsRunner();
+ }
class MacroInspectionReport
{