指定为多个规则的依赖项时重新执行目标

时间:2009-08-02 02:25:43

标签: build-process makefile gnu-make

我有以下GNU makefile:

.PHONY a b c d

a: b c
b: d
c: d
d:
    echo HI

我希望目标'd'能够运行两次 - 因为它被b和amp指定为依赖关系。 C。不幸的是,目标'd'只会被执行一次。运行make的输出将只是'HI',而不是'HI HI'。

我该如何解决这个问题?

谢谢!

要澄清,目标是这样的:

subdirs =  a b c

build: x y

x: target=build
x: $(subdirs)

y: target=prepare
y: $(subdirs)

$(subdirs):
    $(make) -f $@/makefile $(target)

2 个答案:

答案 0 :(得分:3)

build: x y

x: target=build
y: target=prepare

x y: 
    echo hi $(target) $@
    touch $@

另见GNU Makefile rule generating a few targets from a single source file,因为它是对这个问题的答案的答案。

答案 1 :(得分:1)

你是否想要做这样的事情:

.PHONY: a b c

define print-hi
@echo HI
endef

a: b c
b:
    $(print-hi)
c:
    $(print-hi)