vscode-cmake-tools
vscode-cmake-tools copied to clipboard
[Bug] Scan for Kits fails when VS is installed into a non-ASCII path
Brief Issue Summary
With Visual Studio installed into a non-ASCII directory, the Scan for Kits function fails to call the vcvarsall.bat script.
CMake Tools Diagnostics
{
"os": "win32",
"vscodeVersion": "1.106.3",
"cmtVersion": "1.21.36",
"configurations": [
{
"folder": "e:\\Projects\\Visual Studio\\My Libraries\\testable_singleton",
"cmakeVersion": "unknown",
"configured": false,
"generator": "unknown",
"usesPresets": false,
"compilers": {}
}
],
"cpptoolsIntegration": {
"isReady": false,
"hasCodeModel": false,
"activeBuildType": "",
"buildTypesSeen": [],
"requests": [],
"responses": [],
"partialMatches": [],
"targetCount": 0,
"executablesCount": 0,
"librariesCount": 0,
"targets": []
},
"settings": [
{
"communicationMode": "automatic",
"useCMakePresets": "auto",
"configureOnOpen": true
}
]
}
Debug Log
[visual-studio] Error running:C:\Program Files\Fejlesztői Eszközök\Visual Studio\2022\VC\Auxiliary\Build\vcvarsall.bat with args:x86
Cannot find INCLUDE within:
Path := C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Fejlesztři Eszkřzřk\Git\cmd;C:\Program Files (x86)\Fejlesztři Eszkřzřk\Python;C:\Program Files (x86)\Fejlesztři Eszkřzřk\Python\Scripts;C:\Program Files\Fejlesztři Eszkřzřk\VS Code\bin;C:\Program Files (x86)\Fejlesztři Eszkřzřk\Visual Studio\Visual Leak Detector\bin\Win32;C:\Program Files (x86)\Fejlesztři Eszkřzřk\Visual Studio\Visual Leak Detector\bin\Win64;C:\Program Files\Fejlesztři Eszkřzřk\Android Studio\jbr\bin;C:\Program Files (x86)\Křp řs Videř\K-Lite Codec Pack\QT Lite\QTSystem;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\NVIDIA Corporation\NVIDIA app\NvDLISR;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Fejlesztři Eszkřzřk\TortoiseGit\bin;C:\Program Files\dotnet\;C:\Users\Speeder\AppData\Local\Microsoft\WindowsApps;C:\Users\Speeder\.dotnet\tools
TMP := C:\Users\Speeder\AppData\Local\Temp
Bat content are:
@echo off
cd /d "%~dp0"
set "VS170COMNTOOLS=C:\Program Files\Fejlesztői Eszközök\Visual Studio\2022\Common7\Tools"
set "INCLUDE="
call "C:\Program Files\Fejlesztői Eszközök\Visual Studio\2022\VC\Auxiliary\Build\vcvarsall.bat" x86
setlocal enableextensions enabledelayedexpansion
cd /d "%~dp0"
if DEFINED DevEnvDir echo DevEnvDir := %DevEnvDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED Framework40Version echo Framework40Version := %Framework40Version% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED FrameworkDir echo FrameworkDir := %FrameworkDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED FrameworkDIR32 echo FrameworkDIR32 := %FrameworkDIR32% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED FrameworkDIR64 echo FrameworkDIR64 := %FrameworkDIR64% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED FrameworkVersion echo FrameworkVersion := %FrameworkVersion% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED FrameworkVersion32 echo FrameworkVersion32 := %FrameworkVersion32% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED FrameworkVersion64 echo FrameworkVersion64 := %FrameworkVersion64% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED INCLUDE echo INCLUDE := %INCLUDE% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED LIB echo LIB := %LIB% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED LIBPATH echo LIBPATH := %LIBPATH% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED NETFXSDKDir echo NETFXSDKDir := %NETFXSDKDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED Path echo Path := %Path% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED UCRTVersion echo UCRTVersion := %UCRTVersion% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED UniversalCRTSdkDir echo UniversalCRTSdkDir := %UniversalCRTSdkDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED user_inputversion echo user_inputversion := %user_inputversion% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VCIDEInstallDir echo VCIDEInstallDir := %VCIDEInstallDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VCINSTALLDIR echo VCINSTALLDIR := %VCINSTALLDIR% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VCToolsInstallDir echo VCToolsInstallDir := %VCToolsInstallDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VCToolsRedistDir echo VCToolsRedistDir := %VCToolsRedistDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VCToolsVersion echo VCToolsVersion := %VCToolsVersion% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VisualStudioVersion echo VisualStudioVersion := %VisualStudioVersion% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VSINSTALLDIR echo VSINSTALLDIR := %VSINSTALLDIR% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED WindowsLibPath echo WindowsLibPath := %WindowsLibPath% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED WindowsSdkBinPath echo WindowsSdkBinPath := %WindowsSdkBinPath% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED WindowsSdkDir echo WindowsSdkDir := %WindowsSdkDir% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED WindowsSDKLibVersion echo WindowsSDKLibVersion := %WindowsSDKLibVersion% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED WindowsSDKVersion echo WindowsSDKVersion := %WindowsSDKVersion% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED WindowsSDK_ExecutablePath_x64 echo WindowsSDK_ExecutablePath_x64 := %WindowsSDK_ExecutablePath_x64% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED WindowsSDK_ExecutablePath_x86 echo WindowsSDK_ExecutablePath_x86 := %WindowsSDK_ExecutablePath_x86% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED CL echo CL := %CL% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED _CL_ echo _CL_ := %_CL_% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED LINK echo LINK := %LINK% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED _LINK_ echo _LINK_ := %_LINK_% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED TMP echo TMP := %TMP% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED UCRTCONTEXTROOT echo UCRTCONTEXTROOT := %UCRTCONTEXTROOT% >> vs-cmt-0.6975367841318897.bat.env
if DEFINED VCTARGETSPATH echo VCTARGETSPATH := %VCTARGETSPATH% >> vs-cmt-0.6975367841318897.bat.env
Execute output are:
A rendszer nem találja a megadott elérési utat.
...
Additional Information
The issue is that visualStudio.ts builds a batch file from UTF-8 strings, but launches it in cmd with the default locale, instead of matching it with the script's string encoding.
Hi @Sp3EdeR , thanks for reporting issue here! We can reproduce this issue on Visual Studio Code v1.106.2 + CMake Tools v1.21.36 release version. Repro Steps:
- Create a folder named "Fejlesztői Eszközök" and install VS.
- Create a new project and run "CMake: Scan for Kits".
- Observe the result.
Details please see following video:
FYI: @gcampbell-msft