aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qbsprojectmanager/qbsproject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qbsprojectmanager/qbsproject.cpp')
-rw-r--r--src/plugins/qbsprojectmanager/qbsproject.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp
index 727e464b43..7d44d03796 100644
--- a/src/plugins/qbsprojectmanager/qbsproject.cpp
+++ b/src/plugins/qbsprojectmanager/qbsproject.cpp
@@ -469,6 +469,7 @@ void QbsProject::updateAfterParse()
updateCppCodeModel();
updateQmlJsCodeModel();
emit fileListChanged();
+ m_envCache.clear();
emit dataChanged();
}
@@ -652,6 +653,7 @@ void QbsProject::updateAfterBuild()
m_extraCompilersPending = false;
updateCppCodeModel();
}
+ m_envCache.clear();
emit dataChanged();
}
@@ -1115,6 +1117,16 @@ void QbsProject::updateApplicationTargets()
bti.runEnvModifier = [targetFile, productData, this](Utils::Environment &env, bool usingLibraryPaths) {
if (!qbsProject().isValid())
return;
+
+ const QString key = env.toStringList().join(QChar())
+ + QbsProject::uniqueProductName(productData)
+ + QString::number(usingLibraryPaths);
+ const auto it = m_envCache.constFind(key);
+ if (it != m_envCache.constEnd()) {
+ env = it.value();
+ return;
+ }
+
QProcessEnvironment procEnv = env.toProcessEnvironment();
procEnv.insert(QLatin1String("QBS_RUN_FILE_PATH"), targetFile);
QStringList setupRunEnvConfig;
@@ -1133,6 +1145,8 @@ void QbsProject::updateApplicationTargets()
foreach (const QString &key, procEnv.keys())
env.set(key, procEnv.value(key));
}
+
+ m_envCache.insert(key, env);
};
applications.append(bti);