summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2019-05-09 12:37:15 +0200
committerhjk <hjk@qt.io>2019-05-09 12:21:02 +0000
commit9eb58a90c4fe5f880de3e2c27bed5536b386178e (patch)
tree3562a5e0cceb8391ed4225d8078d79df2b9393d1 /src
parentf0541a5eb03da73156d7ce5e8a8438263dc62507 (diff)
downloadqt-creator-9eb58a90c4fe5f880de3e2c27bed5536b386178e.tar.gz
ProjectExplorer: Cache MSVC compiler path
Change-Id: Ic849b2dcaed1de2659076c3b4731f4879a04aeb4 Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.cpp10
-rw-r--r--src/plugins/projectexplorer/msvctoolchain.h4
2 files changed, 11 insertions, 3 deletions
diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp
index dff7ef8559..db65595e3b 100644
--- a/src/plugins/projectexplorer/msvctoolchain.cpp
+++ b/src/plugins/projectexplorer/msvctoolchain.cpp
@@ -748,6 +748,7 @@ void MsvcToolChain::updateEnvironmentModifications(QList<Utils::EnvironmentItem>
Utils::EnvironmentItem::sort(&modifications);
if (modifications != m_environmentModifications) {
m_environmentModifications = modifications;
+ rescanForCompiler();
toolChainUpdated();
}
}
@@ -995,6 +996,7 @@ bool MsvcToolChain::fromMap(const QVariantMap &data)
m_abi = Abi::fromString(abiString);
m_environmentModifications = Utils::EnvironmentItem::itemsFromVariantList(
data.value(QLatin1String(environModsKeyC)).toList());
+ rescanForCompiler();
initEnvModWatcher(Utils::runAsync(envModThreadPool(),
&MsvcToolChain::environmentModifications,
@@ -1207,10 +1209,15 @@ QString MsvcToolChain::makeCommand(const Utils::Environment &environment) const
Utils::FileName MsvcToolChain::compilerCommand() const
{
+ return m_compilerCommand;
+}
+
+void MsvcToolChain::rescanForCompiler()
+{
Utils::Environment env = Utils::Environment::systemEnvironment();
addToEnvironment(env);
- Utils::FileName clexe
+ m_compilerCommand
= env.searchInPath(QLatin1String("cl.exe"), {}, [](const Utils::FileName &name) {
QDir dir(QDir::cleanPath(name.toFileInfo().absolutePath() + QStringLiteral("/..")));
do {
@@ -1220,7 +1227,6 @@ Utils::FileName MsvcToolChain::compilerCommand() const
} while (dir.cdUp() && !dir.isRoot());
return false;
});
- return clexe;
}
IOutputParser *MsvcToolChain::outputParser() const
diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h
index bc7361a0ef..a6c08eaeea 100644
--- a/src/plugins/projectexplorer/msvctoolchain.h
+++ b/src/plugins/projectexplorer/msvctoolchain.h
@@ -111,7 +111,6 @@ public:
const QString &batchFile,
const QString &batchArgs,
QMap<QString, QString> &envPairs);
-
protected:
class WarningFlagAdder
{
@@ -163,6 +162,7 @@ protected:
private:
void updateEnvironmentModifications(QList<Utils::EnvironmentItem> modifications);
+ void rescanForCompiler();
mutable QList<Utils::EnvironmentItem> m_environmentModifications;
mutable QFutureWatcher<GenerateEnvResult> m_envModWatcher;
@@ -174,6 +174,8 @@ private:
mutable Utils::Environment m_lastEnvironment; // Last checked 'incoming' environment.
mutable Utils::Environment m_resultEnvironment; // Resulting environment for VC
+ Utils::FileName m_compilerCommand;
+
protected:
Abi m_abi;