$originalLocation = Get-Location $scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path Set-Location $scriptPath . $scriptPath\_entry.ps1 $generator = "" $arch = "x64" $vsPaths = @( "C:\Program Files\Microsoft Visual Studio\2022\Community", "C:\Program Files\Microsoft Visual Studio\2022\Professional", "C:\Program Files\Microsoft Visual Studio\2022\Enterprise", "C:\Program Files\Microsoft Visual Studio\2022\BuildTools", "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community", "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional", "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise", "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools", "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community", "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional", "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise", "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools" ) foreach ($path in $vsPaths) { if (Test-Path $path) { if ($path -match "2022") { $generator = "Visual Studio 17 2022" } elseif ($path -match "2019") { $generator = "Visual Studio 16 2019" } elseif ($path -match "2017") { $generator = "Visual Studio 15 2017" } break } } if ([string]::IsNullOrEmpty($generator)) { if (Get-Command ninja -ErrorAction SilentlyContinue) { $generator = "Ninja" } elseif (Get-Command nmake -ErrorAction SilentlyContinue) { $generator = "NMake Makefiles" } elseif (Get-Command mingw32-make -ErrorAction SilentlyContinue) { $generator = "MinGW Makefiles" } else { Write-Host "No suitable generator found. Please install Visual Studio or another build system." -ForegroundColor Red exit 1 } } if (!(Test-Path -Path "..\build")) { New-Item -ItemType Directory -Path "..\build" | Out-Null } Set-Location "..\build" if ($generator -match "Visual Studio") { if ($generator -match "Visual Studio 15 2017") { cmake .. -G "$generator" -A $arch -DCMAKE_EXPORT_COMPILE_COMMANDS=ON } else { cmake .. -G "$generator" -A $arch -DCMAKE_EXPORT_COMPILE_COMMANDS=ON } } else { cmake .. -G "$generator" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON } if ($LASTEXITCODE -ne 0) { Write-Host "CMake configuration failed!" -ForegroundColor Red Set-Location $originalLocation exit 1 } if ($generator -match "Visual Studio") { cmake --build . --config Release } else { cmake --build . } if ($LASTEXITCODE -ne 0) { Write-Host "Build failed!" -ForegroundColor Red Set-Location $originalLocation exit 1 } Set-Location $originalLocation