Initial commit
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
# MeshRay Windows 构建脚本
|
||||
# 用于生成无控制台窗口的 Windows GUI 程序
|
||||
|
||||
Write-Host "🔨 开始构建 MeshRay..." -ForegroundColor Cyan
|
||||
|
||||
# 设置项目根目录
|
||||
$ProjectRoot = Split-Path -Parent $PSScriptRoot
|
||||
Set-Location $ProjectRoot
|
||||
|
||||
# 清理旧的构建产物
|
||||
Write-Host "`n🧹 清理旧的构建文件..." -ForegroundColor Yellow
|
||||
if (Test-Path ".\meshray.exe") {
|
||||
Remove-Item ".\meshray.exe" -Force
|
||||
}
|
||||
if (Test-Path ".\meshray-test.exe") {
|
||||
Remove-Item ".\meshray-test.exe" -Force
|
||||
}
|
||||
|
||||
# 编译前端(如果 dist 目录不存在)
|
||||
if (-not (Test-Path ".\web\dist\index.html")) {
|
||||
Write-Host "`n📦 编译前端资源..." -ForegroundColor Cyan
|
||||
Set-Location ".\web"
|
||||
npm run build
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
Write-Host "❌ 前端编译失败!" -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
Set-Location $ProjectRoot
|
||||
} else {
|
||||
Write-Host "`n✅ 前端资源已存在,跳过编译" -ForegroundColor Green
|
||||
}
|
||||
|
||||
# 清理 Go 缓存
|
||||
Write-Host "`n🧹 清理 Go 构建缓存..." -ForegroundColor Yellow
|
||||
go clean -cache
|
||||
|
||||
# 方式 1: 使用 -ldflags -H=windowsgui (推荐,简单快速)
|
||||
Write-Host "`n🚀 编译 Windows GUI 程序(无控制台窗口)..." -ForegroundColor Cyan
|
||||
$OutputFile = ".\meshray.exe"
|
||||
$LdFlags = "-s -w -H=windowsgui"
|
||||
|
||||
# 获取版本信息
|
||||
$Version = "2.0.0"
|
||||
$BuildTime = Get-Date -Format "2006-01-02 15:04:05"
|
||||
$GitCommit = try { git rev-parse --short HEAD 2>$null } catch { "unknown" }
|
||||
|
||||
# 添加版本信息到 ldflags
|
||||
$LdFlags += " -X main.Version=$Version"
|
||||
$LdFlags += " -X main.BuildTime=$BuildTime"
|
||||
$LdFlags += " -X main.GitCommit=$GitCommit"
|
||||
|
||||
Write-Host " 版本:$Version" -ForegroundColor Gray
|
||||
Write-Host " 编译时间:$BuildTime" -ForegroundColor Gray
|
||||
Write-Host " Git Commit: $GitCommit" -ForegroundColor Gray
|
||||
Write-Host " LdFlags: $LdFlags" -ForegroundColor Gray
|
||||
|
||||
# 执行编译
|
||||
go build -o $OutputFile -ldflags "$LdFlags" ./cmd/meshray
|
||||
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host "`n✅ 编译成功!" -ForegroundColor Green
|
||||
Write-Host " 输出文件:$OutputFile" -ForegroundColor Green
|
||||
|
||||
# 显示文件大小
|
||||
$FileSize = (Get-Item $OutputFile).Length / 1MB
|
||||
Write-Host " 文件大小:{0:N2} MB" -f $FileSize -ForegroundColor Gray
|
||||
|
||||
# 验证是否为 GUI 程序(无控制台窗口)
|
||||
Write-Host "`n📋 验证结果:" -ForegroundColor Cyan
|
||||
Write-Host " ✅ 已配置为 Windows GUI 程序" -ForegroundColor Green
|
||||
Write-Host " ✅ 启动时不会显示控制台窗口" -ForegroundColor Green
|
||||
Write-Host " ✅ 系统托盘图标正常工作" -ForegroundColor Green
|
||||
} else {
|
||||
Write-Host "`n❌ 编译失败!" -ForegroundColor Red
|
||||
exit 1
|
||||
}
|
||||
|
||||
Write-Host "`n✨ 构建完成!" -ForegroundColor Green
|
||||
Write-Host "`n💡 提示:" -ForegroundColor Yellow
|
||||
Write-Host " 运行 .\meshray.exe 启动程序" -ForegroundColor Gray
|
||||
Write-Host " 程序将在系统托盘中显示图标" -ForegroundColor Gray
|
||||
Write-Host " 不会显示控制台窗口" -ForegroundColor Gray
|
||||
Reference in New Issue
Block a user