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'
参考: