我有以下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
为什么会这样?
答案 0 :(得分:2)
默认情况下,make会运行第一个目标,在您的情况下为compile
:http://www.gnu.org/software/make/manual/html_node/How-Make-Works.html#How-Make-Works
如果您希望all
成为默认目标,请先列出它。
答案 1 :(得分:2)
当您执行make
时,默认情况下将执行第一个目标。它是一个将all
保留为第一个依赖关系的约定,即使它可以在您执行的任何位置,除非您将all
传递给make
。甚至可以查看.PHONY
。