-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
84 lines (75 loc) · 3.35 KB
/
Copy pathMakefile
File metadata and controls
84 lines (75 loc) · 3.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# CodePilot 构建入口
# ----------------------------------------------------------------------
# 把图标资源生成 → .syso 资源注入 → Go 编译 三个步骤固化下来,
# 让任何协作者执行一条 `make build` 即可获得带 LOGO 图标的 exe。
#
# 前置依赖:
# - Go >= 1.20
# - Python >= 3.8 + pillow
# - akavel/rsrc(go install github.com/akavel/rsrc@latest)
# ----------------------------------------------------------------------
APP := CodePilot
BUILD_DIR := build
ASSETS_DIR := $(BUILD_DIR)/assets
DIST_DIR := $(BUILD_DIR)/dist
SYSO_NAME := resource_windows_amd64.syso
ICO := $(ASSETS_DIR)/icon.ico
RC := $(ASSETS_DIR)/icon.rc
SYSO := src/$(SYSO_NAME)
ENTRY := ./src
RSRC := $(shell go env GOPATH)/bin/rsrc.exe
PYTHON := python
.PHONY: help build icon clean run-test-icon dist
help:
@echo "CodePilot 构建命令:"
@echo " make build - 完整构建 Windows exe(含图标,默认目标)"
@echo " make icon - 重新生成图标资源(icon.ico / icon.png / icon.rc)"
@echo " make clean - 清理 syso 与构建产物"
@echo " make dist - 构建并归档到 build/dist/"
# 默认目标:图标 + syso + 编译
build: icon $(SYSO)
@mkdir -p $(DIST_DIR)
@echo ">> 编译 $(APP).exe ..."
@GOOS=windows GOARCH=amd64 go build -ldflags="-s -w" -o $(DIST_DIR)/$(APP).exe $(ENTRY)
@echo ">> 产物: $(DIST_DIR)/$(APP).exe"
@ls -lh $(DIST_DIR)/$(APP).exe
# Step 10.1 Task 4 — 复制内置 Skill 资源目录到输出目录
# 源:src/internal/skill/builtin/<name>/
# 目标:$(DIST_DIR)/internal/skill/builtin/<name>/
# 与 skill.LoadAll 实际扫描路径(scanner.go builtinRelPath = "internal/skill/builtin")对齐。
@if [ -n "$$(ls -A src/internal/skill/builtin 2>/dev/null)" ]; then \
echo ">> 复制内置 Skill 资源 ..."; \
rm -rf $(DIST_DIR)/internal/skill/builtin; \
mkdir -p $(DIST_DIR)/internal/skill/builtin; \
cp -r src/internal/skill/builtin/. $(DIST_DIR)/internal/skill/builtin/; \
echo ">> 已复制到 $(DIST_DIR)/internal/skill/builtin/"; \
fi
# Step 12 Task 7 — 复制内置 SubAgent 定义到输出目录
# 源:src/internal/subagent/builtin/*.md
# 目标:$(DIST_DIR)/internal/subagent/builtin/*.md
# 与 definition.DefaultLoadOptions 的 BuiltinRelPath = "internal/subagent/builtin" 对齐。
@if [ -n "$$(ls -A src/internal/subagent/builtin/*.md 2>/dev/null)" ]; then \
echo ">> 复制内置 SubAgent 定义 ..."; \
rm -rf $(DIST_DIR)/internal/subagent/builtin; \
mkdir -p $(DIST_DIR)/internal/subagent/builtin; \
cp -r src/internal/subagent/builtin/. $(DIST_DIR)/internal/subagent/builtin/; \
echo ">> 已复制到 $(DIST_DIR)/internal/subagent/builtin/"; \
fi
# 1. 生成 ICO / PNG / RC(与 WebUI favicon 同款 LOGO)
icon:
@echo ">> 生成图标资源 ..."
@$(PYTHON) $(ASSETS_DIR)/generate_icon.py
# 2. 把 .ico 编译成 Go 工具链能识别的 .syso
# 必须放在 main 包同目录,GOOS=windows GOARCH=amd64 时自动链接
$(SYSO): $(ICO) $(RC)
@echo ">> 编译 .syso (akavel/rsrc) ..."
@if [ ! -f "$(RSRC)" ]; then \
echo "!! 未找到 rsrc,正在安装 akavel/rsrc ..."; \
go install github.com/akavel/rsrc@latest; \
fi
@$(RSRC) -ico $(ICO) -o $(SYSO)
dist: build
@echo ">> 归档完成: $(DIST_DIR)/$(APP).exe"
clean:
@echo ">> 清理 ..."
@rm -f $(SYSO) $(DIST_DIR)/$(APP).exe