# 设置程序名称 $appName = "anyproxy" # 创建构建目录 New-Item -ItemType Directory -Force -Path "builds" | Out-Null # 清理旧构建文件 Remove-Item -Path "builds\*" -Force -Recurse -ErrorAction SilentlyContinue # 定义目标平台 $platforms = @( @{ OS = "linux"; Arch = "amd64" }, @{ OS = "linux"; Arch = "arm64" }, @{ OS = "windows"; Arch = "amd64" }, @{ OS = "windows"; Arch = "arm64" }, @{ OS = "darwin"; Arch = "amd64" }, @{ OS = "darwin"; Arch = "arm64" } ) # 交叉编译函数 function Build-Target { param ( [string]$os, [string]$arch ) $output = "builds\$appName-$os-$arch" # Windows 平台添加 .exe 后缀 if ($os -eq "windows") { $output += ".exe" } Write-Host "Building for $os/$arch..." -ForegroundColor Yellow # 设置环境变量并编译 $env:GOOS = $os $env:GOARCH = $arch go build -ldflags="-s -w" -o $output . if ($LASTEXITCODE -eq 0) { Write-Host "✓ Success: $output" -ForegroundColor Green } else { Write-Host "✗ Failed: $os/$arch" -ForegroundColor Red } } # 遍历所有平台进行编译 foreach ($platform in $platforms) { Build-Target -os $platform.OS -arch $platform.Arch } # 生成校验和文件 Write-Host "Generating checksums..." -ForegroundColor Yellow Set-Location -Path "builds" $checksumFile = "checksums.txt" $files = Get-ChildItem -Exclude $checksumFile # 清空旧的校验和文件 if (Test-Path $checksumFile) { Clear-Content $checksumFile } # 为每个文件生成SHA256校验和 foreach ($file in $files) { $hash = Get-FileHash -Path $file.FullName -Algorithm SHA256 "$($hash.Hash.ToLower()) $($file.Name)" | Out-File -FilePath $checksumFile -Append -Encoding UTF8 } Write-Host "✓ Checksums generated: builds\$checksumFile" -ForegroundColor Green Set-Location -Path ".." Write-Host "Build complete! Files are in the 'builds' directory." -ForegroundColor Cyan