Files
ngzz-mc/scripts/build.ps1
NianGao Dev 9e7d4d20e2 feat(build): 程序图标使用原版素材 logo + 安装器运行/快捷方式选项
- scripts/make_icon.ps1:素材包 pack.png → go-winres 生成 icon.syso
  (嵌入 exe 图标与版本信息);窗口图标运行时 SetWindowIcon
- 安装.bat:桌面快捷方式 [Y/n](默认 Y)、安装后立即运行 [Y/n](默认 Y)
- build.ps1 在 syso 缺失时自动生成图标
2026-08-16 23:23:31 +08:00

55 lines
2.4 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 年糕历险记 构建脚本(Windows)
# 用法:pwsh -File scripts/build.ps1 [-Release]
# 自动定位 C 工具链(tools/ 下的 zig 或 mingw64/w64devkit),构建 GL 客户端与服务器。
param([switch]$Release)
$ErrorActionPreference = "Stop"
$root = Split-Path $PSScriptRoot -Parent
$tools = Join-Path $root "tools"
# 定位 C 编译器(GLFW 需要 CGO):优先 zig(zig cc),其次 mingw64/w64devkit 的 gcc
$cc = $null
$zig = Get-ChildItem $tools -Recurse -Filter zig.exe -ErrorAction SilentlyContinue | Select-Object -First 1
if ($zig) {
$cc = "$($zig.FullName) cc"
Write-Host "== 使用 zig 作为 C 编译器: $($zig.FullName) =="
} else {
$gcc = Get-ChildItem $tools -Recurse -Filter gcc.exe -ErrorAction SilentlyContinue | Select-Object -First 1
if ($gcc) {
$cc = $gcc.FullName
$env:Path = "$(Split-Path $gcc.FullName);$env:Path"
Write-Host "== 使用 gcc: $($gcc.FullName) =="
} else {
Write-Host "== 未找到 C 工具链:请把 zig(或 MinGW)放到 tools/ 后重试。"
Write-Host " 下载:https://ziglang.org/download/(zig-x86_64-windows-*.zip)"
Write-Host " 或: https://github.com/brechtsanders/winlibs_mingw/releases(winlibs zip)"
exit 1
}
}
$env:CC = $cc
$env:CGO_ENABLED = "1"
$tags = "gl"
if (-not $Release) { $tags = "$tags dev" }
Push-Location $root
try {
New-Item -ItemType Directory -Force -Path bin | Out-Null
# exe 图标(原版素材 logo):缺失时自动生成 .syso(make_icon.ps1)
if (-not (Test-Path (Join-Path $root "cmd\client\icon.syso"))) {
& (Join-Path $PSScriptRoot "make_icon.ps1")
if ($LASTEXITCODE -ne 0) { throw "图标生成失败(make_icon.ps1)" }
}
go build -tags $tags -trimpath -ldflags "-s -w" -o bin/mc-client.exe ./cmd/client
go build -trimpath -ldflags "-s -w" -o bin/mc-server.exe ./cmd/server
# 资源入 bin/(可执行文件目录解析:双击/快捷方式运行无需依赖工作目录)
Copy-Item (Join-Path $root "config") (Join-Path $root "bin") -Recurse -Force
Copy-Item (Join-Path $root "assets") (Join-Path $root "bin") -Recurse -Force
Copy-Item (Join-Path $root "mods") (Join-Path $root "bin") -Recurse -Force
Copy-Item (Join-Path $root "resourcepacks") (Join-Path $root "bin") -Recurse -Force
} finally {
Pop-Location
}
Write-Host "== 构建完成:bin/mc-client.exe bin/mc-server.exe(含资源) =="