#!/usr/bin/env bash # 打包 macOS 完整客户端(登录 → 选人 → 进游戏)。 # # ./build-macos-client.sh [debug|release] # # 产物:build/export/mtgodot-poc.app + 旁边一个 assets 符号链接(不进包,2.1G)。 # 依赖:Godot 4.7.1 的 macOS 导出模板(editor 里 “管理导出模板” 装,或放 # ~/Library/Application Support/Godot/export_templates/4.7.1.stable/macos.zip)。 set -euo pipefail cd "$(dirname "$0")" REPO="$(pwd)" CFG="${1:-debug}" OUT="$REPO/build/export" APP="$OUT/mtgodot-poc.app" GODOT="${GODOT:-godot}" echo "== 1. GDExtension .dylib ==" cmake --build build --target mtgodot -j8 DYLIB="project/bin/libmtgodot.macos.template_${CFG}.dylib" if [ ! -f "$DYLIB" ]; then # CMake 目前只出 debug 名;release 就复用它 cp -f project/bin/libmtgodot.macos.template_debug.dylib "$DYLIB" fi echo "== 2. 导出 ==" mkdir -p "$OUT" if [ "$CFG" = release ]; then "$GODOT" --headless --path project --export-release macOS "$APP" else "$GODOT" --headless --path project --export-debug macOS "$APP" fi echo "== 3. 资源(不打进包)==" # .app 同级放一个 assets 链接;AssetRoot 会在 <.app 同级>/assets 找到它。 ln -sfn "$REPO/assets" "$OUT/assets" ln -sfn "$REPO/bgm" "$OUT/bgm" echo "== 4. ad-hoc 签名(Apple Silicon 直跑)==" codesign --force --deep --sign - "$APP" 2>/dev/null || true xattr -dr com.apple.quarantine "$APP" 2>/dev/null || true echo echo "OK -> $APP" echo "跑: open '$APP' (用 $OUT/assets)" echo "或: MT_ASSETS='$REPO/assets' '$APP/Contents/MacOS/mtgodot-poc' (看控制台日志)"