为什么`make`只执行依赖?

时间:2013-04-05 18:24:13

标签: makefile build-automation

我有以下Makefile

compile:
    echo a
run: compile
    echo b
all: run

make all具有预期效果:

$ make all
echo a
a
echo b
b

但只是调用make只会执行compile target:

$ make
echo a
a

为什么会这样?

2 个答案:

答案 0 :(得分:2)

默认情况下,make会运行第一个目标,在您的情况下为compilehttp://www.gnu.org/software/make/manual/html_node/How-Make-Works.html#How-Make-Works

如果您希望all成为默认目标,请先列出它。

答案 1 :(得分:2)

当您执行make时,默认情况下将执行第一个目标。它是一个将all保留为第一个依赖关系的约定,即使它可以在您执行的任何位置,除非您将all传递给make。甚至可以查看.PHONY