BINARY := meshgo GOOS := linux GOARCH := amd64 OUT := ./build/$(BINARY) .PHONY: all build build-linux build-win install clean all: build ## 本机编译(Windows CGO) build: @mkdir -p build CGO_ENABLED=1 go build -trimpath -ldflags="-s -w" -o $(OUT) . @echo ">>> 已生成: $(OUT)" ## Linux 交叉编译(需要目标机器有 gcc,可选) ## 若遇 sqlite3 链接错误,请在 Linux 服务器上直接编译: ## make build-linux-native build-linux: @mkdir -p build CGO_ENABLED=1 GOOS=$(GOOS) GOARCH=$(GOARCH) CC=x86_64-linux-gnu-gcc \ go build -trimpath -ldflags="-s -w" -o $(OUT) . @echo ">>> 已生成 Linux $(GOARCH) 二进制: $(OUT)" ## Linux 服务器上原生编译(推荐生产环境使用) build-linux-native: @mkdir -p build CGO_ENABLED=1 go build -trimpath -ldflags="-s -w" -o $(OUT) . @echo ">>> 已生成: $(OUT)" ## 部署到目标机器(需要 SSH_HOST 环境变量,如 make install SSH_HOST=root@192.168.1.10) install: build @test -n "$(SSH_HOST)" || (echo "请设置 SSH_HOST,例如: make install SSH_HOST=root@192.168.1.10" && exit 1) scp $(OUT) $(SSH_HOST):/usr/local/bin/$(BINARY) scp meshgo.service $(SSH_HOST):/etc/systemd/system/$(BINARY).service ssh $(SSH_HOST) "systemctl daemon-reload && systemctl enable $(BINARY) && systemctl restart $(BINARY)" @echo ">>> 部署完成" clean: rm -rf build/