blob: 108d5761394532830d51404298222bb9b0ac9100 [file] [log] [blame]
Hal Canaryf72728e2019-07-10 11:24:52 -04001#!/usr/bin/env python
2# Copyright 2019 Google Inc.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
5
6import os
7import sys
Martin Vejdarskic5695042020-03-09 01:07:26 +07008import subprocess
Hal Canaryf72728e2019-07-10 11:24:52 -04009
10'''
11Look for the first match in the format
12 C:\\Program Files (x86)\\Microsoft Visual Studio\\${RELEASE}\\${VERSION}\\VC
13'''
14def find_msvc():
15 if sys.platform.startswith('win'):
16 default_dir = r'C:\Program Files (x86)\Microsoft Visual Studio'
17 for release in ['2019', '2017']:
Ben Wagner66662292020-04-30 14:12:00 -040018 for version in ['Enterprise', 'Professional', 'Community', 'BuildTools', 'Preview']:
Hal Canaryf72728e2019-07-10 11:24:52 -040019 path = os.path.join(default_dir, release, version, 'VC')
20 if os.path.isdir(path):
21 return path
Martin Vejdarskic5695042020-03-09 01:07:26 +070022
23 # Fall back to vswhere.exe to determine non-standard installation paths
24 # Fixed location, https://github.com/Microsoft/vswhere/wiki/Installing
25 vswhere = os.path.join(os.getenv('ProgramFiles(x86)'),
26 'Microsoft Visual Studio', 'Installer', 'vswhere.exe')
27 command = (vswhere + ' -prerelease -legacy -products * -sort -utf8 '
28 '-property installationPath')
29 paths = subprocess.check_output(command).decode('utf-8').splitlines()
30 if paths:
31 return paths[0] + '\\VC'
32
Hal Canaryf72728e2019-07-10 11:24:52 -040033 return None
34
35if __name__ == '__main__':
36 result = find_msvc()
37 if result:
38 sys.stdout.write(result + '\n')