我的makefile如下,
all: target1
@echo "$(USER)"
target1: target2
@echo "$(HOME)"
target2:
@echo "$(SHELL)"
如果执行make all
,将得到预期的输出。但是有没有办法知道执行该命令时哪个目标被击中。在这种情况下,make all
调用了target1, target2
。如果我完成了make target1
,则仅会调用target2
。
我做的一个非常糟糕的解决方案是在所有目标中添加echo语句,如下所示,
all: target1
@echo "Running $@"
@echo "$(USER)"
target1: target2
@echo "Running $@"
@echo "$(HOME)"
target2:
@echo "Running $@"
@echo "$(SHELL)"
无需添加此类打印件,是否有任何好的解决方案?
首先,当您运行时
make target1
您应该先看到target2然后执行target1。
如果要查看make
如何订购目标并执行它们,可以运行make -d
。