mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-11-25 07:39:01 +08:00
7d0bcceaf0
This means we can print text in powershell now and it won't break vcpkg.
51 lines
1.7 KiB
PowerShell
51 lines
1.7 KiB
PowerShell
[CmdletBinding()]
|
|
param(
|
|
[Parameter(Mandatory=$False)]
|
|
[string]$explicitlyRequestedVSPath = ""
|
|
)
|
|
|
|
$explicitlyRequestedVSPath = $explicitlyRequestedVSPath -replace "\\$" # Remove potential trailing backslash
|
|
|
|
$scriptsDir = split-path -parent $MyInvocation.MyCommand.Definition
|
|
$VisualStudioInstallationInstances = & $scriptsDir\findVisualStudioInstallationInstances.ps1
|
|
Write-Verbose "VS Candidates:`n`r$([system.String]::Join([Environment]::NewLine, $VisualStudioInstallationInstances))"
|
|
foreach ($instanceCandidateWithEOL in $VisualStudioInstallationInstances)
|
|
{
|
|
$instanceCandidate = $instanceCandidateWithEOL -replace "<sol>::" -replace "::<eol>"
|
|
Write-Verbose "Inspecting: $instanceCandidate"
|
|
$split = $instanceCandidate -split "::"
|
|
# $preferenceWeight = $split[0]
|
|
# $releaseType = $split[1]
|
|
$version = $split[2]
|
|
$path = $split[3]
|
|
|
|
if ($explicitlyRequestedVSPath -ne "" -and $explicitlyRequestedVSPath -ne $path)
|
|
{
|
|
Write-Verbose "Skipping: $instanceCandidate"
|
|
continue
|
|
}
|
|
|
|
$majorVersion = $version.Substring(0,2);
|
|
if ($majorVersion -eq "15")
|
|
{
|
|
$VCFolder= "$path\VC\Tools\MSVC\"
|
|
if (Test-Path $VCFolder)
|
|
{
|
|
Write-Verbose "Picking: $instanceCandidate"
|
|
return "$path\MSBuild\15.0\Bin\MSBuild.exe", "v141"
|
|
}
|
|
}
|
|
|
|
if ($majorVersion -eq "14")
|
|
{
|
|
$clExe= "$path\VC\bin\cl.exe"
|
|
if (Test-Path $clExe)
|
|
{
|
|
Write-Verbose "Picking: $instanceCandidate"
|
|
$programFilesPath = & $scriptsDir\getProgramFiles32bit.ps1
|
|
return "$programFilesPath\MSBuild\14.0\Bin\MSBuild.exe", "v140"
|
|
}
|
|
}
|
|
}
|
|
|
|
throw "Could not find MSBuild version with C++ support. VS2015 or VS2017 (with C++) needs to be installed." |