-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
72 lines (61 loc) · 2.19 KB
/
Makefile
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
# 定义项目名称
BINARY_NAME=eryajfctl
# 定义输出目录
OUTPUT_DIR=bin
VERSION = $(shell git describe --tags --always)
GIT_COMMIT = $(shell git rev-parse --short HEAD)
BUILD_TIME = $(shell date "+%F %T")
define LDFLAGS
"-X 'github.com/eryajf/eryajfctl/cmd.Version=${VERSION}' \
-X 'github.com/eryajf/eryajfctl/cmd.GitCommit=${GIT_COMMIT}' \
-X 'github.com/eryajf/eryajfctl/cmd.BuildTime=${BUILD_TIME}'"
endef
.PHONY: default
default: help
.PHONY: build
build:
go build -ldflags=${LDFLAGS} -o ${BINARY_NAME} main.go
.PHONY: build-linux
build-linux:
CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build -ldflags=${LDFLAGS} -o ${BINARY_NAME} main.go
.PHONY: lint
lint:
env GOGC=25 golangci-lint run --fix -j 8 -v ./... --timeout=10m
.PHONY: gox-linux
gox-linux:
CGO_ENABLED=0 gox -osarch="linux/amd64 linux/arm64" -ldflags=${LDFLAGS} -output="${OUTPUT_DIR}/${BINARY_NAME}_{{.OS}}_{{.Arch}}"
@for b in $$(ls ${OUTPUT_DIR}); do \
OUTPUT_FILE="${OUTPUT_DIR}/$$b"; \
upx -9 -q "$$OUTPUT_FILE"; \
done
.PHONY: gox-all
gox-all:
CGO_ENABLED=0 gox -osarch="darwin/amd64 darwin/arm64 linux/amd64 linux/arm64 linux/ppc64le windows/amd64" -ldflags=${LDFLAGS} -output="${OUTPUT_DIR}/${BINARY_NAME}_{{.OS}}_{{.Arch}}"
@for b in $$(ls ${OUTPUT_DIR}); do \
FILENAME=$$(basename -s .exe "$$b"); \
GOOS=$$(echo "$$FILENAME" | rev | cut -d'_' -f2 | rev); \
GOARCH=$$(echo "$$FILENAME" | rev | cut -d'_' -f1 | rev); \
OUTPUT_FILE="${OUTPUT_DIR}/$$b"; \
if [ "$$GOOS" = "windows" ] && [ "$$GOARCH" = "arm64" ]; then \
echo "跳过 $$OUTPUT_FILE (Windows/arm64 不压缩)"; \
elif [ "$$GOOS" = "darwin" ]; then \
echo "压缩 macOS 文件: $$OUTPUT_FILE"; \
upx --force-macos -fq -9 "$$OUTPUT_FILE"; \
else \
echo "压缩通用文件: $$OUTPUT_FILE"; \
upx -q -9 "$$OUTPUT_FILE"; \
fi; \
done
.PHONY: clean
clean:
@rm -rf ${OUTPUT_DIR}
# 帮助信息
.PHONY: help
help:
@echo "参数:"
@echo " build 为当前平台构建可执行文件"
@echo " gox-linux 为Linux平台构建可执行文件"
@echo " gox-all 为所有平台构建可执行文件"
@echo " clean 清理生成的可执行文件"
@echo " lint 代码格式检查"
@echo " help 显示帮助信息"