Skip to content

cc-rs refuses to find MSVC tools via environment when ran as a CustomBuild from msbuild #1189

@russelltg

Description

@russelltg

We have a bit of rust code that we build from msbuild, and we want it to pick up the exact compiler version that msbuild is using.

msbuild sets the environment so that $PATH contains the path to cl.exe, but cc-rs only considers finding cl.exe from the environment if VCINSTALLDIR is in the environment, which somewhat strangely msbuild doesn't set when running custom build tools.

The environment that is set while running this tool is

ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\Russell\AppData\Roaming
ARS_OUTPUT_DIR=..\..\..\ReleaseNoOpt_x64\
CAExcludePath=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.40.33807\atlmfc\include;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.40.33807\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt;;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\winrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\cppwinrt;Include\um;
CARGO=\\?\C:\Users\Russell\.rustup\toolchains\stable-x86_64-pc-windows-msvc\bin\cargo.exe
CARGO_CFG_PANIC=unwind
CARGO_CFG_TARGET_ABI=
CARGO_CFG_TARGET_ARCH=x86_64
CARGO_CFG_TARGET_ENDIAN=little
CARGO_CFG_TARGET_ENV=msvc
CARGO_CFG_TARGET_FAMILY=windows
CARGO_CFG_TARGET_FEATURE=cmpxchg16b,fxsr,sse,sse2,sse3
CARGO_CFG_TARGET_HAS_ATOMIC=128,16,32,64,8,ptr
CARGO_CFG_TARGET_OS=windows
CARGO_CFG_TARGET_POINTER_WIDTH=64
CARGO_CFG_TARGET_VENDOR=pc
CARGO_CFG_WINDOWS=
CARGO_ENCODED_RUSTFLAGS=
CARGO_FEATURE_DEFAULT=1
CARGO_HOME=C:\Users\Russell\.cargo
CARGO_MAKEFLAGS=-j --jobserver-fds=__rust_jobserver_semaphore_3377682860 --jobserver-auth=__rust_jobserver_semaphore_3377682860
CARGO_MANIFEST_DIR=C:\Users\Russell\.cargo\registry\src\index.crates.io-6f17d22bba15001f\link-cplusplus-1.0.9
CARGO_MANIFEST_LINKS=cplusplus
CARGO_PKG_AUTHORS=David Tolnay <dtolnay@gmail.com>
CARGO_PKG_DESCRIPTION=Link libstdc++ or libc++ automatically or manually
CARGO_PKG_HOMEPAGE=
CARGO_PKG_LICENSE=MIT OR Apache-2.0
CARGO_PKG_LICENSE_FILE=
CARGO_PKG_NAME=link-cplusplus
CARGO_PKG_README=README.md
CARGO_PKG_REPOSITORY=https://github.com/dtolnay/link-cplusplus
CARGO_PKG_RUST_VERSION=1.34
CARGO_PKG_VERSION=1.0.9
CARGO_PKG_VERSION_MAJOR=1
CARGO_PKG_VERSION_MINOR=0
CARGO_PKG_VERSION_PATCH=9
CARGO_PKG_VERSION_PRE=
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=RUSSELL-LAPTOP
ComSpec=C:\Windows\system32\cmd.exe
CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0
CUDA_PATH_V11_8=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8
CUDA_PATH_V12_0=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0
DEBUG=true
DriverData=C:\Windows\System32\Drivers\DriverData
EXTERNAL_INCLUDE=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.40.33807\include;;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.40.33807\atlmfc\include;;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\VS\include;;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt;;;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\VS\UnitTest\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\winrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\cppwinrt;Include\um;
FFMPEG_INCLUDE_DIR=C:\Program Files\ffmpeg-5.1.2-full_build-shared\include
FFMPEG_LIB_DIR=C:\Program Files\ffmpeg-5.1.2-full_build-shared\lib
FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer
FPS_BROWSER_USER_PROFILE_STRING=Default
GCExpConfigUsedInSession=3
HOMEDRIVE=C:
HOMEPATH=\Users\Russell
HOST=x86_64-pc-windows-msvc
IGCCSVC_DB=AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAAUR+FyWBus0isSktT+2+G7AQAAAACAAAAAAAQZgAAAAEAACAAAACgka/WUIIc6oaw00/gTs3R8Bj1dhYZ8UPANlmOfoRKmQAAAAAOgAAAAAIAACAAAADSoRA7TIadZliY7nzmMBbJ78wNZkAHiapsuSYYjhpXdmAAAADS1KgdybHfgOhzRbI8j4td237Ovh/oZD7T4K/N+xD8Eh8duypGZkBDo1tbYxKFiz6e/P4Td86aornF7klNeTgjTEfub14AiTYHGUH7fRU5RitxdBgFDTrcOxKBpNefELBAAAAA4xWmm7C/vbOPiPMvWGNG2rqX0Isj6p1jP3Mk4+n7rjJaBKCIqaUxr3CtZql1wmMR1E94VGFBAFhYPGTFofQ1yA==
INCLUDE=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.40.33807\include;;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.40.33807\atlmfc\include;;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\VS\include;;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\ucrt;;;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\VS\UnitTest\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\winrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\cppwinrt;Include\um;
LD_LIBRARY_PATH=C:\Users\Russell\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib
LIB=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.40.33807\lib\x64;;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.40.33807\atlmfc\lib\x64;;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\VS\lib\x64;;C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64;;;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\VS\UnitTest\lib;C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\um\x64;lib\um\x64;
LIBPATH=C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.40.33807\atlmfc\lib\x64;;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.40.33807\lib\x64;
LOCALAPPDATA=C:\Users\Russell\AppData\Local
LOGONSERVER=\\RUSSELL-LAPTOP
MSBuildLoadMicrosoftTargetsReadOnly=true
NO_XILINX_DATA_LICENSE=HIDDEN
NUMBER_OF_PROCESSORS=16
NUM_JOBS=16
OneDrive=C:\Users\Russell\OneDrive
OneDriveConsumer=C:\Users\Russell\OneDrive
OPT_LEVEL=0
OS=Windows_NT
OUT_DIR=C:\ars\target\relnoopt\build\link-cplusplus-9a54f0e08f89f09a\out
Path=C:\ars\target\relnoopt\deps;C:\ars\target\relnoopt;C:\Users\Russell\.rustup\toolchains\stable-x86_64-pc-windows-msvc\lib\rustlib\x86_64-pc-windows-msvc\lib;C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.40.33807\bin\HostX64\x64;C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64;;C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x86;;C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\tools;C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\ide;C:\Program Files (x86)\HTML Help Workshop;;C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin\amd64;C:\Windows\Microsoft.NET\Framework64\v4.0.30319\;C:\Windows\Microsoft.NET\Framework\v4.0.30319\;C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Current\Bin;C:\Windows\Microsoft.NET\Framework\v4.0.30319\;;C:\Program Files\Python310\Scripts\;C:\Program Files\Python310\;C:\VulkanSDK\1.3.250.1\Bin;C:\Program Files\Python311\Scripts\;C:\Program Files\Python311\;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.0\libnvvp;C:\Program Files\Python38\Scripts\;C:\Program Files\Python38\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\dotnet\;C:\Program Files\nodejs\;C:\Program Files\GitHub CLI\;C:\Program Files\Docker\Docker\resources\bin;C:\Program Files\NVIDIA Corporation\Nsight Compute 2022.4.1\;C:\Program Files\ffmpeg-5.1.2-full_build-shared\bin;C:\Program Files\PuTTY\;C:\Program Files\CMake\bin;C:\Program Files\LLVM\bin;C:\Users\Russell\.cargo\bin;C:\Python38\Scripts\;C:\Python38\;C:\Users\Russell\AppData\Local\Microsoft\WindowsApps;;C:\Users\Russell\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\Russell\AppData\Roaming\npm;C:\Users\Russell\.dotnet\tools;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW
PkgDefApplicationConfigFile=C:\Users\Russell\AppData\Local\Microsoft\VisualStudio\17.0_0d0151cf\devenv.exe.config
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 141 Stepping 1, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=8d01
PROFILE=debug
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules
PUBLIC=C:\Users\Public
RUSTC=C:\Users\Russell\.rustup\toolchains\stable-x86_64-pc-windows-msvc\bin\rustc.exe
RUSTDOC=C:\Users\Russell\.rustup\toolchains\stable-x86_64-pc-windows-msvc\bin\rustdoc.exe
RUSTUP_HOME=C:\Users\Russell\.rustup
RUSTUP_TOOLCHAIN=stable-x86_64-pc-windows-msvc
RUST_RECURSION_COUNT=1
ServiceHubLogSessionKey=8BD4954D
SESSIONNAME=Console
SignInWithHomeTenantOnly=False
SystemDrive=C:
SystemRoot=C:\Windows
TARGET=x86_64-pc-windows-msvc
TEMP=C:\Users\Russell\AppData\Local\Temp
ThreadedWaitDialogDpiContext=-4
TMP=C:\Users\Russell\AppData\Local\Temp
USERDOMAIN=RUSSELL-LAPTOP
USERDOMAIN_ROAMINGPROFILE=RUSSELL-LAPTOP
USERNAME=Russell
USERPROFILE=C:\Users\Russell
VisualStudioDir=C:\Users\Russell\Documents\Visual Studio 2022
VisualStudioEdition=Microsoft Visual Studio Professional 2022
VisualStudioVersion=17.0
VK_SDK_PATH=C:\VulkanSDK\1.3.250.1
VSAPPIDDIR=C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\
VSAPPIDNAME=devenv.exe
VSLANG=1033
VsPerMonitorDpiAwarenessEnabled.24672=TRUE
VSSKUEDITION=Professional
VSTEL_CurrentSolutionBuildID=4006439614
VSTEL_MSBuildProjectFullPath=C:\ars\src\athena\icd2\icd2_client.vcxproj
VSTEL_ProjectID={0117bb73-bcd5-427f-886b-4d2ca1a13b16}
VSTEL_SolutionPath=C:\ars\src\apps\gear\gear.sln
VSTEL_SolutionSessionID={FE95DC5F-2A1F-41EA-ADD7-EA5B30E108F1}
VS_Perf_Session_GCHeapCount=2
VULKAN_SDK=C:\VulkanSDK\1.3.250.1
windir=C:\Windows
ZES_ENABLE_SYSMAN=1
_PTVS_PID=24672

Maybe we could considering allowing environment-based detection if one of these variables is set? Maybe VisualStudioDir?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions