为什么“make default”运行所有依赖,但“make”只运行一个?

时间:2018-02-17 09:22:42

标签: makefile

我有一个简单的Makefile

name=xxx

build:
    docker build -t $(name) .

run:
    docker run --rm -it $(name)

.PHONY: default
default: build run

当我执行make时,只有build运行;但make default同时执行buildrun短语。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

default没有任何特殊之处,Makefiles 默认目标是首先指定的目标。

name=xxx

.PHONY: default
default: build run

build:
    docker build -t $(name) .

run:
    docker run --rm -it $(name)

应该这样做。

答案 1 :(得分:2)

“默认”目标,即:如果没有为make指定目标(而不是名称为default的目标),则默认构建的目标是找到的第一个目标在makefile中。

只需放置以下行:

default: build run

在makefile中的任何其他目标之前。这会将名为default的目标转换为默认目标

答案 2 :(得分:1)

默认目标是makefile中的第一个规则,除非采取特殊步骤。参见:

您可以使用.DEFAULT更改默认目标: