11def --env find_msvs [] {
22 export-env {
33 $env .MSVS_BASE_PATH = $env .Path
4+ $env .INCLUDE_BEFORE = if " INCLUDE" in $env { ($env .INCLUDE | split row (char esep )) } else { null }
45 $env .PATH_VAR = (if " Path" in $env { " Path" } else { " PATH" })
5- $env .INCLUDE_BEFORE = ($env .INCLUDE | split row (char esep ))
66
77 # According to https://github.com/microsoft/vswhere/wiki/Installing, vswhere should always be in this location.
88 let vswhere_cmd = ($' ($env . " ProgramFiles(x86)" )\Microsoft Visual Studio\Installer\vswhere.exe' )
@@ -38,7 +38,7 @@ def --env find_msvs [] {
3838 $' ($env .MSVS_MSDK_ROOT )Include\($env .MSVS_MSDK_VER )\ucrt' ,
3939 $' ($env .MSVS_MSDK_ROOT )Include\($env .MSVS_MSDK_VER )\um' ,
4040 $' ($env .MSVS_MSDK_ROOT )Include\($env .MSVS_MSDK_VER )\winrt'
41- ] | append $env .INCLUDE_BEFORE | str join (char esep ))
41+ ] | str join (char esep ))
4242
4343 let esep_path_converter = {
4444 from_string : { |s | $s | split row (char esep ) }
@@ -162,7 +162,11 @@ export def --env activate [
162162 }
163163 load-env {
164164 $env .PATH_VAR : $env_path ,
165- INCLUDE : $env .MSVS_INCLUDE_PATH ,
165+ INCLUDE : (if $env .INCLUDE_BEFORE == null {
166+ $env .MSVS_INCLUDE_PATH
167+ } else {
168+ $env .MSVS_INCLUDE_PATH | append $env .INCLUDE_BEFORE
169+ }),
166170 LIB : $lib_path
167171 }
168172
@@ -180,15 +184,22 @@ export def --env deactivate [] {
180184
181185 load-env {
182186 $env .PATH_VAR : $env .MSVS_BASE_PATH ,
183- INCLUDE : ($env .INCLUDE_BEFORE | path expand | str join (char esep )),
184187 }
185188
186189 hide-env LIB
187- hide-env INCLUDE_BEFORE
188190 hide-env MSVS_BASE_PATH
189191 hide-env MSVS_ROOT
190192 hide-env MSVS_MSVC_ROOT
191193 hide-env MSVS_MSDK_ROOT
192194 hide-env MSVS_MSDK_VER
193195 hide-env MSVS_INCLUDE_PATH
194- }
196+
197+ if $env .INCLUDE_BEFORE == null {
198+ hide-env INCLUDE
199+ } else {
200+ load-env {
201+ INCLUDE : ($env .INCLUDE_BEFORE | path expand | str join (char esep ))
202+ }
203+ hide-env INCLUDE_BEFORE
204+ }
205+ }
0 commit comments