Makefile 基本语法
<target> : <prerequisites>
[tab] <commands>
- target : 即自定义的想要执行的命令
- prerequisites: 前置条件,即执行 target 命令之前执行的命令
- commands : 具体的执行的命令
- .PHONY 伪指令,内置的关键字
- 不带参数,默认执行第一个 target
- @ 表示禁止回声,即终端不会打印真实的执行命令
#
表示注释- ${val} 表示变量,和 shell 脚本中的变量的声明和使用一致
- 允许使用 通配符
例如
APPNAME="hello"
.PHONY: build
build:clean
@go build -o ${APPNAME} main.go
.PHONY: clean
clean:
@rm -rf ${APPNAME}
嵌套执行
创建嵌套file文件
$ tree
.
├── Makefile
├── hello
│ ├── Makefile
│ └── hello.go
└── main.go
1 directory, 4 files
$(MAKE) -C subdir
上面的命令等价于如下的命令
cd subdir && $(MAKE)
$(MAKE)就相当于make,-C 选项的作用是指将当前工作目录转移到你所指定的位置。
执行的makefile 文件如下
APPNAME="main"
.PHONY: build
build:clean
@go build -o ${APPNAME} main.go
.PHONY: clean
clean:
@rm -rf ${APPNAME}
.PHONE: build-hello
build-hello:
@${MAKE} -C hello build
**