v0.1.1.4: Build scripts moved to scripts/ directory; enhanced documentation; automated release script
This commit is contained in:
62
scripts/build_windows.ps1
Normal file
62
scripts/build_windows.ps1
Normal file
@ -0,0 +1,62 @@
|
||||
# Requires: PowerShell, Visual Studio 2022 Build Tools (C++), vcpkg (will be bootstrapped), Git
|
||||
# Usage:
|
||||
# powershell -NoProfile -ExecutionPolicy Bypass -File .\build_windows.ps1
|
||||
|
||||
Set-StrictMode -Version Latest
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
Write-Host "Building PrivateBin API C++ (Windows, x64, Release)" -ForegroundColor Cyan
|
||||
|
||||
# Resolve vcpkg root
|
||||
if (-not $env:VCPKG_ROOT) {
|
||||
$env:VCPKG_ROOT = Join-Path $env:USERPROFILE 'vcpkg'
|
||||
}
|
||||
|
||||
if (-not (Test-Path $env:VCPKG_ROOT)) {
|
||||
Write-Host "Cloning vcpkg into $env:VCPKG_ROOT ..."
|
||||
git clone https://github.com/microsoft/vcpkg $env:VCPKG_ROOT
|
||||
& "$env:VCPKG_ROOT\bootstrap-vcpkg.bat"
|
||||
}
|
||||
|
||||
# Choose generator (VS 2022)
|
||||
$generator = 'Visual Studio 17 2022'
|
||||
$arch = 'x64'
|
||||
|
||||
# Clean and configure
|
||||
if (Test-Path build) { Remove-Item -Recurse -Force build }
|
||||
cmake -S . -B build -G "$generator" -A $arch -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_ROOT\scripts\buildsystems\vcpkg.cmake"
|
||||
|
||||
# Build
|
||||
cmake --build build --config Release
|
||||
|
||||
Write-Host "Build completed." -ForegroundColor Green
|
||||
|
||||
# Package artifacts (zip)
|
||||
$dist = Join-Path (Get-Location) 'dist\windows'
|
||||
if (Test-Path $dist) { Remove-Item -Recurse -Force $dist }
|
||||
New-Item -ItemType Directory -Force -Path $dist | Out-Null
|
||||
|
||||
# Collect artifacts
|
||||
$binDir = Join-Path (Get-Location) 'build\Release'
|
||||
$exampleDir = Join-Path (Get-Location) 'build\example\Release'
|
||||
|
||||
$dll = Join-Path $binDir 'privatebinapi.dll'
|
||||
$lib = Join-Path $binDir 'privatebinapi.lib'
|
||||
$pdb = Join-Path $binDir 'privatebinapi.pdb'
|
||||
$exe = Join-Path $exampleDir 'example.exe'
|
||||
|
||||
Copy-Item -Path $dll -Destination $dist -ErrorAction SilentlyContinue
|
||||
Copy-Item -Path $lib -Destination $dist -ErrorAction SilentlyContinue
|
||||
Copy-Item -Path $pdb -Destination $dist -ErrorAction SilentlyContinue
|
||||
Copy-Item -Path $exe -Destination $dist -ErrorAction SilentlyContinue
|
||||
Copy-Item -Path (Join-Path (Get-Location) 'include') -Destination $dist -Recurse
|
||||
Copy-Item -Path (Join-Path (Get-Location) 'README.md') -Destination $dist
|
||||
Copy-Item -Path (Join-Path (Get-Location) 'LICENSE') -Destination $dist -ErrorAction SilentlyContinue
|
||||
|
||||
$zipPath = Join-Path (Get-Location) 'dist\lib-privatebin-v0.1.1.3-windows-x64.zip'
|
||||
if (Test-Path $zipPath) { Remove-Item -Force $zipPath }
|
||||
Compress-Archive -Path (Join-Path $dist '*') -DestinationPath $zipPath
|
||||
|
||||
Write-Host "Windows artifact packaged:" -ForegroundColor Cyan
|
||||
Write-Host " $zipPath"
|
||||
|
||||
Reference in New Issue
Block a user