如果我创建一个带有先决条件的隐式规则(但没有配方),那么似乎不会尊重依赖关系。另一方面,如果我在定义配方的块中定义了先决条件,或者如果我指定了目标特定实例的依赖关系,它似乎确实有效。我有以下 Makefile (GNU make 3.81)
all: foo.a foo.b bar.b bar.c
dep1:
@echo "running $@"
%.a: dep1
%.a:
@echo "running $@ (depends on: $^)"
bar.b: dep1
%.b: dep1
@echo "running $@ (depends on: $^)"
bar.c: dep1
bar.c:
@echo "running $@ (depends on: $^)"
如果我运行 make,我会得到:
~/tmp/tmp5> make
running foo.a (depends on: )
running dep1
running foo.b (depends on: dep1)
running bar.b (depends on: dep1)
running bar.c (depends on: dep1)
似乎即使我有%.a
依赖dep1
,也foo.a
可以在不构建的情况下dep1
构建。这是make中的错误,还是有这种行为的原因?
谢谢,
约翰