Go使用Makefile根据不同平台编译二进制包

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'


参考:

anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/5175.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注