Find Visual Studio Build Tools 2019

Got the Idea from setuptools
a5131f0b82/setuptools/msvc.py (L176)
pull/8811/head
Naveen M K 4 years ago committed by Xavier Claessens
parent a9959a3859
commit 7ec5267939
  1. 28
      mesonbuild/mesonmain.py

@ -64,21 +64,31 @@ def setup_vsenv():
if shutil.which('cl.exe'):
return
bat_locator_bin = r'c:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe'
if not os.path.exists(bat_locator_bin):
root = os.environ.get("ProgramFiles(x86)") or os.environ.get("ProgramFiles")
bat_locator_bin = pathlib.Path(root, 'Microsoft Visual Studio/Installer/vswhere.exe')
if not bat_locator_bin.exists():
return
bat_json = subprocess.check_output([bat_locator_bin, '-latest', '-format', 'json'])
bat_json = subprocess.check_output(
[
str(bat_locator_bin),
'-latest',
'-prerelease',
'-requiresAny',
'-requires', 'Microsoft.VisualStudio.Component.VC.Tools.x86.x64',
'-requires', 'Microsoft.VisualStudio.Workload.WDExpress',
'-products', '*',
'-format',
'json'
]
)
bat_info = json.loads(bat_json)
if not bat_info:
bat_json = subprocess.check_output([bat_locator_bin, '-prerelease', '-format', 'json'])
bat_info = json.loads(bat_json)
if not bat_info:
# VS installer instelled but not VS itself maybe?
return
print('Activating VS', bat_info[0]['catalog']['productDisplayVersion'])
bat_root = bat_info[0]['installationPath']
bat_path = bat_root + r'\VC\Auxiliary\Build\vcvars64.bat'
if not os.path.exists(bat_path):
bat_root = pathlib.Path(bat_info[0]['installationPath'])
bat_path = bat_root / 'VC/Auxiliary/Build/vcvars64.bat'
if not bat_path.exists():
return
bat_file = pathlib.Path.home() / 'vsdetect.bat'

Loading…
Cancel
Save