gin框架实践连载番外篇| Makefile构建

1,464

引言

  • 复杂的一个项目有工程,编译通常会有有很多依赖项,这个时候就要引入批量构建技术,大名鼎鼎的docker有Dockerfile ,Unix通常用make工具
  • make是什么?
  • Make 是一个构建自动化工具,会在当前目录下寻找 Makefile 或 makefile 文件。如果存在,会依据 Makefile 的构建规则去完成构建

1、安装make

window

下载链接 sourceforge.net/projects/mi…

  • 1、解压之后会得到一个mingw64的文件夹,将其拷贝到你要安装的目录。
  • 2、解压完毕之后需要配置环境变量
  • 3、path下添加你的mingw64/bin,如:D:\mingw64\bin
  • 4、打开cmd执行gcc -v
  • 5、将mingw32-make.exe 改为 make.exe
  • 6、执行make -v

linux

yum install -y make

make -v

2、makefile规则

<target> : <prerequisites> 
[tab]  <commands>
  • target: 即自定义的自己想要执行的命令
  • prerequisites: 先决条件,执行在target之前,多个用空格隔开
  • tab: 每一个command前面一定要有制表符,用于标示这是命令
  • commands: 具体执行的命令。
  • .PHONY 伪指令,主要作用是命名避免与同名文件冲突和提高性能,加上后此参数,当存在冲突文件,也会执行 target, 否则会报错。
  • 不带执行参数,默认执行第一个target
  • 在command前加上@,禁止打印出command执行语句,只显示执行结果
  • ${val}表示变量,与shell一样使用
  • 允许使用通配符
  • ‘#’表示注释

3、makfile示例

项目目录新建makefile或者Makefile

# Go parameters
BINARY_NAME=go-api
BINARY_UNIX=$(BINARY_NAME)_unix
VERSION="v0.0.1"
DATE= `date +%Y%m%d%H%M%S`

.PHONY: all

all: version test build

version:
		@echo version: ${VERSION}
build:
		@echo version: ${VERSION} date: ${DATE} os: windows
		@go build -o $(BINARY_NAME) -v -race
test:
		go test tests/* -count=1
clean:
		go clean
		rm -f $(BINARY_NAME)
		rm -f $(BINARY_UNIX)
run:
		go build -o $(BINARY_NAME) -v ./...
		./$(BINARY_NAME)

# Cross compilation
build-linux:
		@echo version: ${VERSION} date: ${DATE} os: linux-centOS
		CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o $(BINARY_UNIX) -v

执行命令

make version
make build 

错误:*** missing separator (did you mean TAB instead of 8 spaces?). Stop

解决方案:前面用TAB键,而不是空格空格空格

4、总结

学到就是赚到了,与君共勉之

系列文章