diff options
Diffstat (limited to 'src/plugins/qbsprojectmanager/qbsproject.cpp')
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsproject.cpp | 14 |
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); |