presets: Fix encoding of env/penv macro expansion on Windows

Look up environment variables using a wide-character API on Windows,
and convert their value to our internal UTF-8 encoding.
This commit is contained in:
Brad King
2023-04-26 09:34:25 -04:00
parent 827d5b75d4
commit 1df24df01f

View File

@@ -4,7 +4,6 @@
#include <algorithm>
#include <cassert>
#include <cstdlib>
#include <functional>
#include <iostream>
#include <iterator>
@@ -448,9 +447,9 @@ bool ExpandMacros(cmCMakePresetsGraph& graph, const T& preset,
if (macroName.empty()) {
return ExpandMacroResult::Error;
}
const char* value = std::getenv(macroName.c_str());
if (value) {
result += value;
if (cm::optional<std::string> value =
cmSystemTools::GetEnvVar(macroName)) {
result += *value;
}
return ExpandMacroResult::Ok;
}