$wxwidgetsVersion = "3.1.1" $destinationRoot = "$PSScriptRoot\wxwidgets" $output_directory = "$destinationRoot-$wxwidgetsVersion" $zip_file = "$output_directory.zip" $solution_name = "wx_vc12.sln" $visual_studio_type = "Community" $msBuildLocation = "C:\Program Files (x86)\Microsoft Visual Studio\2017\$visual_studio_type\MSBuild\15.0\Bin\MSBuild.exe" $visualStudioLocation = "C:\Program Files (x86)\Microsoft Visual Studio\2017\$visual_studio_type\Common7\IDE\devenv.exe" $configurations = @("Debug","Release") function get_elapsed_time($start_time) { Write-Output "Time taken: $((Get-Date).Subtract($start_time).Minutes) minutes(s) $((Get-Date).Subtract($start_time).Seconds) second(s)" } if (!(Test-Path $zip_file)) { Write-Host "Downloading WXWidgets v$wxwidgetsVersion..." [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $url = "https://github.com/wxWidgets/wxWidgets/releases/download/v$wxwidgetsVersion/wxWidgets-$wxwidgetsVersion.zip" $start_time = Get-Date $wc = New-Object System.Net.WebClient $wc.DownloadFile($url, $zip_file) get_elapsed_time($start_time) } else { Write-Host "Already downloaded WXWidgets v$wxwidgetsVersion." } if (Test-Path $zip_file) { if (!(Test-Path $output_directory)) { Write-Host "Extracting WXWidgets..." $start_time = Get-Date Expand-Archive $zip_file -DestinationPath $output_directory -Force get_elapsed_time($start_time) } else { Write-Host "Already extracted WXWidgets v$wxwidgetsVersion.zip." } } if(Test-Path $output_directory) { Set-Location "$output_directory\build\msw" Write-Host "Updating solution..." & $visualStudioLocation /Upgrade $solution_name Write-Host "Building wxwidgets..." Foreach($configuration in $configurations) { $start_time = Get-Date Write-Host "Building $configuration configuration..." & $msBuildLocation $solution_name /m /p:Configuration=$configuration -v:q -t:clean,rebuild get_elapsed_time($start_time) } } Set-Location ..\..\ if (Test-Path $output_directory) { $start_time = Get-Date Write-Host "Copying files..." Copy-Item -Path "$output_directory\lib" -Recurse -Destination "$destinationRoot\lib" -Container Copy-Item -Path "$output_directory\include" -Recurse -Destination "$destinationRoot\include" -Container get_elapsed_time($start_time) } Set-Location $PSScriptRoot