Go是一门编译型语言,在不同平台上,需要编译生成不同格式的二进制包。编译时候只需要指定两个参数:GOOS 和 GOARCH 即可。使用Makefile来编译Go的二进制包非常合适。Makefile文件示例如下:
.PHONY: all build run gotool clean help
# 根据不同平台编译生成不同格式的二进制包
ifeq ($(shell uname),Darwin)
PLATFORM="darwin"
else
ifeq ($(OS),Windows_NT)
PLATFORM="windows"
else
PLATFORM="linux"
endif
endif
BINARY="thor"
LOGDIR = "log"
all: gotool build
build:
CGO_ENABLED=0 GOOS=${PLATFORM} GOARCH=amd64 go build -o ${BINARY}
run:
@go run ./main.go conf/config.dev.toml
gotool:
go fmt ./
go vet ./
clean:
@if [ -f ${BINARY} ] ; then rm ${BINARY} ; fi
@if [ -d ${LOGDIR} ] ; then rm -rf ${LOGDIR} ; fi
help:
@echo "make - 格式化 Go 代码, 并编译生成二进制文件"
@echo "make build - 编译 Go 代码, 生成二进制文件"
@echo "make run - 直接运行 Go 代码"
@echo "make clean - 移除二进制文件和日志目录"
@echo "make gotool - 运行 Go 工具 'fmt' and 'vet'"终端执行 make help 查看帮助:
root@chegva ~# > make help make - 格式化 Go 代码, 并编译生成二进制文件 make build - 编译 Go 代码, 生成二进制文件 make run - 直接运行 Go 代码 make clean - 移除二进制文件和日志目录 make gotool - 运行 Go 工具 'fmt' and 'vet'
参考: