CMakePM: Expand CMake preset macros also for environment vars

This fixes the case when a CMake variable (CMAKE_PREFIX_PATH) would
reference an environment variable (qt_path) that would contain a CMake
preset macro (${sourceDir}/../qt_install).

Fixes: QTCREATORBUG-28606
Change-Id: Ib6239b13782b2ea854969547af46c3fe82a061f4
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Cristian Adam
2023-03-10 20:11:59 +01:00
parent d154388f27
commit 05d9742a96
2 changed files with 21 additions and 5 deletions

View File

@@ -144,6 +144,9 @@ void expand(const PresetType &preset,
return env.value(macroName);
});
// Make sure to expand the CMake macros also for environment variables
expandAllButEnv(preset, sourceDirectory, value);
if (append)
env.appendOrSet(key, value, sep);
else
@@ -182,6 +185,9 @@ void expand(const PresetType &preset,
return QString("${%1}").arg(macroName);
});
// Make sure to expand the CMake macros also for environment variables
expandAllButEnv(preset, sourceDirectory, value);
envItems.emplace_back(Utils::EnvironmentItem(key, value, operation));
}
}
@@ -202,6 +208,9 @@ void expand(const PresetType &preset,
value = expandMacroEnv("penv", value, [env](const QString &macroName) {
return env.value(macroName);
});
// Make sure to expand the CMake macros also for environment variables
expandAllButEnv(preset, sourceDirectory, value);
}
void updateToolchainFile(