aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/users/config-environment.md7
-rw-r--r--toolsrc/src/vcpkg/base/system.cpp13
2 files changed, 20 insertions, 0 deletions
diff --git a/docs/users/config-environment.md b/docs/users/config-environment.md
index f25df89a3..bffa07278 100644
--- a/docs/users/config-environment.md
+++ b/docs/users/config-environment.md
@@ -40,3 +40,10 @@ This environment variable can be set to a triplet name which will be used for un
#### VCPKG_FORCE_SYSTEM_BINARIES
This environment variable, if set, suppresses the downloading of CMake and Ninja and forces the use of the system binaries.
+
+### VCPKG_KEEP_ENV_VARS
+
+This environment variable can be set to a list of environment variables, separated by `;`, which will be propagated to
+the build environment.
+
+Example: `FOO_SDK_DIR;BAR_SDK_DIR`
diff --git a/toolsrc/src/vcpkg/base/system.cpp b/toolsrc/src/vcpkg/base/system.cpp
index 90b9c34b3..6ddf17496 100644
--- a/toolsrc/src/vcpkg/base/system.cpp
+++ b/toolsrc/src/vcpkg/base/system.cpp
@@ -178,6 +178,19 @@ namespace vcpkg::System
L"ANDROID_NDK_HOME",
};
+ const Optional<std::string> keep_vars = System::get_environment_variable("VCPKG_KEEP_ENV_VARS");
+ const auto k = keep_vars.get();
+
+ if (k && !k->empty())
+ {
+ auto vars = Strings::split(*k, ";");
+
+ for (auto&& var : vars)
+ {
+ env_wstrings.push_back(Strings::to_utf16(var.c_str()));
+ }
+ }
+
std::wstring env_cstr;
for (auto&& env_wstring : env_wstrings)