Makefile 基本语法

  1. <target> : <prerequisites>
  2. [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

**