plugins/Makefile

140 lines
3.9 KiB
Makefile
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.

# 强制指定 Go 版本(需与主程序编译环境一致)
REQUIRED_GO_VERSION := 1.23.6
# 目标平台配置(根据运行环境调整,如 arm64
TARGET_GOOS := linux
TARGET_GOARCH := amd64
# 交叉编译工具链Mac 编译 Linux amd64 必需)
TARGET_CC := x86_64-linux-musl-gcc
build-linux1:
@echo "===== 开始编译 Linux 插件 ====="
@echo "要求 Go 版本: $(REQUIRED_GO_VERSION)"
@echo "目标平台: $(TARGET_GOOS)/$(TARGET_GOARCH)"
# 1. 检查 Go 版本
@go version | grep -q $(REQUIRED_GO_VERSION) || ( \
echo "错误:需要 Go $(REQUIRED_GO_VERSION),当前版本:$(shell go version)"; \
exit 1 \
)
# 2. 检查插件目录
@[ -d "plugins/${name}" ] || ( \
echo "错误:插件目录 plugins/${name} 不存在"; \
exit 1 \
)
# 3. 核心:所有命令写在同一行,确保环境变量作用域生效
# 注意:&& 连接,且环境变量紧跟 cd 后,与 go build 同进程
cd plugins/${name} && \
CGO_ENABLED=1 \
CC=$(TARGET_CC) \
GOOS=$(TARGET_GOOS) \
GOARCH=$(TARGET_GOARCH) \
GOPROXY=https://goproxy.cn,direct \
go build -buildmode=plugin -trimpath -o ../../pkg/linux/${name}.so .
# 4. 验证编译结果
@echo "===== 编译完成 ====="
@echo "插件路径: pkg/linux/${name}.so"
@echo "插件格式检测:"
@file pkg/linux/${name}.so
build-linux:
cd plugins; \
export GOOS=linux; \
export GOARCH=amd64; \
export CGO_ENABLED=0; \
export GOPROXY=https://goproxy.cn,direct; \
cd ${name} && go build -o ../../pkg/linux/${name}.so .
build-mac:
cd plugins; \
export GOOS=darwin; \
export GO111MODULE=on; \
export CGO_ENABLED=0; \
export GOPROXY=https://goproxy.cn,direct; \
cd ${name} && go build -o ../../pkg/mac/${name}.so .
build-win:
cd plugins; \
export GOOS=windows; \
export GOARCH=amd64; \
export GO111MODULE=on; \
export CGO_ENABLED=0; \
export GOPROXY=https://goproxy.cn,direct; \
cd ${name} && go build -o ../../pkg/win/${name}.so .
.PHONY: zltx_v1
zltx_v1:
make build-linux name=zltx_v1 && \
make build-mac name=zltx_v1 && \
make build-win name=zltx_v1
.PHONY: zltx_card_v1
zltx_card_v1:
make build-linux name=zltx_card_v1 && \
make build-mac name=zltx_card_v1 && \
make build-win name=zltx_card_v1
.PHONY: zltx_v2
zltx_v2:
make build-linux name=zltx_v2 && \
make build-mac name=zltx_v2 && \
make build-win name=zltx_v2
.PHONY: alipay_cpn
alipay_cpn:
make build-linux name=alipay_cpn && \
make build-mac name=alipay_cpn && \
make build-win name=alipay_cpn
.PHONY: alipay_redpack
alipay_redpack:
make build-linux name=alipay_redpack && \
make build-mac name=alipay_redpack && \
make build-win name=alipay_redpack
.PHONY: wechat_cpn
wechat_cpn:
make build-linux name=wechat_cpn && \
make build-mac name=wechat_cpn && \
make build-win name=wechat_cpn
.PHONY: wechat_redpack
wechat_redpack:
make build-linux name=wechat_redpack && \
make build-mac name=wechat_redpack && \
make build-win name=wechat_redpack
.PHONY: wechat_redpack_v2
wechat_redpack_v2:
make build-linux name=wechat_redpack_v2 && \
make build-mac name=wechat_redpack_v2 && \
make build-win name=wechat_redpack_v2
.PHONY: union_pay_cpn
union_pay_cpn:
make build-linux name=union_pay_cpn && \
make build-mac name=union_pay_cpn && \
make build-win name=union_pay_cpn
.PHONY: union_pay_redpack
union_pay_redpack:
make build-linux name=union_pay_redpack && \
make build-mac name=union_pay_redpack && \
make build-win name=union_pay_redpack
.PHONY: qixing_alipay_redpack
qixing_alipay_redpack:
make build-linux name=qixing_alipay_redpack && \
make build-mac name=qixing_alipay_redpack && \
make build-win name=qixing_alipay_redpack
.PHONY: qixing_wechat_redpack
qixing_wechat_redpack:
make build-linux name=qixing_wechat_redpack && \
make build-mac name=qixing_wechat_redpack && \
make build-win name=qixing_wechat_redpack
.PHONY: all
all: zltx_v1 zltx_card_v1 zltx_v2 alipay_cpn alipay_redpack wechat_cpn wechat_redpack wechat_redpack_v2