在Go项目中使用Makefile
在Go项目中使用Makefile
简介
Makefile 是一个构建工具,主要用于自动化编译和程序链接。它是一种脚本工具,在 Unix/Linux 的程序开发中被广泛使用。Makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更复杂的功能操作,以完成所需要的程序构建任务。
Makefile由多条规则组成,每条规则主要由两个部分组成,分别是依赖的关系和执行的命令。
其结构如下所示:
[target] ... : [prerequisites] ...
<tab>[command]
...
...
其中:
- targets:规则的目标
- prerequisites:可选的要生成 targets 需要的文件或者是目标。
- command:make 需要执行的命令(任意的 shell 命令)。可以有多条命令,每一条命令占一行。
举个例子:
build:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o xx
.PHONY: all build run gotool clean help
BINARY="bluebull"
all: gotool build
build:
CGO_ENABLED=0 GOOS=linus GOARCH=amd64 go build -ldflags "-s -w" -o ./bin/${BINARY}
run:
@go run ./main.go conf/config.yaml
gotool:
go fmt ./
go vet ./
clean:
@if [ -f ${BINARY} ] ; then rm ${BINARY} ; fi
help:
@echo "make - 格式化 Go 代码, 并编译生成二进制文件"
@echo "make build - 编译 Go 代码, 生成二进制文件"
@echo "make run - 直接运行 Go 代码"
@echo "make clean - 移除二进制文件和 vim swap files"
@echo "make gotool - 运行 Go 工具 'fmt' and 'vet'"

浙公网安备 33010602011771号