# Builder 契约文件。放到项目根,用 `make -f makefile.builder `。 # iOS 轨道:build 产出 dist/__.ipa,push 走 copy_artifact.sh。 # copy_artifact.sh 会按 COPY_SCRIPT 分发;未配置时回退到 COPY_DEST。 # ARCHES 是构建机 ISA。不要把这些目标写进用户 Makefile。 ARCHES ?= arm64 ARCH ?= $(firstword $(ARCHES)) ifeq ($(strip $(ARCHES)),) $(error ARCHES must not be empty) endif ifneq ($(filter-out amd64 arm64,$(ARCHES)),) $(error ARCHES entries must be amd64 or arm64) endif ifneq ($(filter $(ARCH),$(ARCHES)),$(ARCH)) $(error ARCH must be one of: $(ARCHES)) endif PROJECT_NAME ?= $(notdir $(CURDIR)) DIST_DIR ?= dist ifneq ($(BUILDER_SKILL_DIR),) include $(BUILDER_SKILL_DIR)/scripts/version.mk else include $(HOME)/.pouch/skills/builder/scripts/version.mk endif BUILDER_SCRIPTS := $(or $(BUILDER_SKILL_DIR),$(HOME)/.pouch/skills/builder)/scripts IPA_OUT := $(DIST_DIR)/$(PROJECT_NAME)_$(VERSION)_$(ARCH).ipa .PHONY: help version arches clean build ios push help: @echo "$(PROJECT_NAME) $(VERSION)" @echo " ARCHES=$(ARCHES) ARCH=$(ARCH)" @echo " make -f makefile.builder build [ARCH=amd64|arm64] - 构建 IPA" @echo " make -f makefile.builder version - 打印规范版本" @echo " make -f makefile.builder arches - 打印架构清单" @echo " make -f makefile.builder clean - 删除 $(DIST_DIR)" @echo " make -f makefile.builder push - copy_artifact.sh 分发 IPA" version: @echo $(VERSION) arches: @echo $(ARCHES) clean: rm -rf $(DIST_DIR) # 替换为项目真实 xcodebuild/export 命令,且必须使用 $(ARCH)。不得 curl/scp/docker cp。 build: mkdir -p $(DIST_DIR) cp app.ipa $(IPA_OUT) ios: build push: $(BUILDER_SCRIPTS)/copy_artifact.sh $(IPA_OUT)