| #!/usr/bin/env python |
| # Copyright 2019 Google Inc. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import os |
| import sys |
| import subprocess |
| |
| ''' |
| Look for the first match in the format |
| C:\\Program Files (x86)\\Microsoft Visual Studio\\${RELEASE}\\${VERSION}\\VC |
| ''' |
| def find_msvc(): |
| if sys.platform.startswith('win'): |
| default_dir = r'C:\Program Files (x86)\Microsoft Visual Studio' |
| for release in ['2019', '2017']: |
| for version in ['Enterprise', 'Professional', 'Community', 'BuildTools']: |
| path = os.path.join(default_dir, release, version, 'VC') |
| if os.path.isdir(path): |
| return path |
| |
| # Fall back to vswhere.exe to determine non-standard installation paths |
| # Fixed location, https://github.com/Microsoft/vswhere/wiki/Installing |
| vswhere = os.path.join(os.getenv('ProgramFiles(x86)'), |
| 'Microsoft Visual Studio', 'Installer', 'vswhere.exe') |
| command = (vswhere + ' -prerelease -legacy -products * -sort -utf8 ' |
| '-property installationPath') |
| paths = subprocess.check_output(command).decode('utf-8').splitlines() |
| if paths: |
| return paths[0] + '\\VC' |
| |
| return None |
| |
| if __name__ == '__main__': |
| result = find_msvc() |
| if result: |
| sys.stdout.write(result + '\n') |