From f17c0fe19cc117ae9c8bc8cdf348603e51f61c29 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Wed, 5 Jun 2024 00:50:37 +0200 Subject: [PATCH] CMakePM: Fix Presets macro expanding of environment Amends a25bbf23c64c912b39bf2020df73c0db97b5bc40 The commit broke evironment variable usage in CMake presets. For example "$env{HOME}" would have been expanded to "/home/user:/home/user" because of code thinking it deals with paths. Change-Id: I3ef34179e2ebaf55b25a42dcce87438c1a72b73e Reviewed-by: Eike Ziller --- .../cmakeprojectmanager/presetsmacros.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/presetsmacros.cpp b/src/plugins/cmakeprojectmanager/presetsmacros.cpp index b7496d0c412..cfc161b417e 100644 --- a/src/plugins/cmakeprojectmanager/presetsmacros.cpp +++ b/src/plugins/cmakeprojectmanager/presetsmacros.cpp @@ -139,11 +139,13 @@ void expand(const PresetType &preset, Environment &env, const FilePath &sourceDi return presetEnv.value(macroName); }); - bool append = true; + enum Operation { set, appendOrSet, prependOrSet }; + Operation op = set; if (key.compare("PATH", Qt::CaseInsensitive) == 0) { + op = appendOrSet; const int index = value.indexOf("$penv{PATH}", 0, Qt::CaseInsensitive); if (index != 0) - append = false; + op = prependOrSet; value.replace("$penv{PATH}", "", Qt::CaseInsensitive); } @@ -154,10 +156,17 @@ void expand(const PresetType &preset, Environment &env, const FilePath &sourceDi // Make sure to expand the CMake macros also for environment variables expandAllButEnv(preset, sourceDirectory, value); - if (append) + switch (op) { + case set: + env.set(key, value); + break; + case appendOrSet: env.appendOrSet(key, value); - else + break; + case prependOrSet: env.prependOrSet(key, value); + break; + } }); }