Skip to content

Commit

Permalink
toolchain.prf: Use vswhere to obtain VS installation path
Browse files Browse the repository at this point in the history
Beginning with Visual Studio 2017, vswhere should be used to discover
Visual Studio installations. Installations of 2019 and up are not even
registered inside the registry anymore, so vswhere is the only way to
obtain information about these.

Pick-to: 5.15
Task-number: QTVSADDINBUG-819
Change-Id: Ibd8b2c4d38c7925857887f39e750e87a33f08bf9
Reviewed-by: Joerg Bornemann <[email protected]>
  • Loading branch information
owolff committed Oct 27, 2020
1 parent da4ac99 commit 04e0306
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions mkspecs/features/toolchain.prf
Original file line number Diff line number Diff line change
Expand Up @@ -326,9 +326,17 @@ isEmpty($${target_prefix}.INCDIRS) {
error("Mkspec does not specify MSVC_VER. Cannot continue.")
versionAtLeast(MSVC_VER, 15.0) {
dir = $$(VSINSTALLDIR)
isEmpty(dir): \
dir = $$read_registry(HKLM, \
"Software\\Microsoft\\VisualStudio\\SxS\\VS7\\$$MSVC_VER", 32)
isEmpty(dir) {
version_parts = $$split(MSVC_VER, .)
MSVC_NEXT_MAJOR = $$num_add($$first(version_parts), 1)
vswhere = "$$getenv(ProgramFiles\(x86\))/Microsoft Visual Studio/Installer/vswhere.exe"
!exists($$vswhere): \
error("Could not find $$vswhere")
vswhere = $$system_quote($$system_path($$vswhere))
# -version parameter: A version range for instances to find. 15.0 will get all versions >= 15.0
# Example: [15.0,16.0) will find versions 15.*.
dir = $$system("$$vswhere -latest -version [$$MSVC_VER,$${MSVC_NEXT_MAJOR}.0] -property installationPath")
}
isEmpty(dir): \
error("Failed to find the Visual Studio installation directory.")
cmd += $$system_quote($$dir\\VC\\Auxiliary\\Build\\vcvarsall.bat) $$arch
Expand Down

0 comments on commit 04e0306

Please sign in to comment.