vscode-cmake-tools icon indicating copy to clipboard operation
vscode-cmake-tools copied to clipboard

[Bug] Scan for Kits fails when VS is installed into a non-ASCII path

Open Sp3EdeR opened this issue 3 months ago • 1 comments

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.

Sp3EdeR avatar Dec 01 '25 09:12 Sp3EdeR

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:

  1. Create a folder named "Fejlesztői Eszközök" and install VS.
  2. Create a new project and run "CMake: Scan for Kits".
  3. Observe the result.

Details please see following video: Image

FYI: @gcampbell-msft

yanghhhhhhh avatar Dec 02 '25 09:12 yanghhhhhhh