Повторно выполнить цель, если указано как зависимость от нескольких правил - PullRequest
5 голосов
/ 02 августа 2009

У меня есть следующий make-файл GNU:

.PHONY a b c d

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

Я бы хотел, чтобы цель 'd' запускалась дважды - так как она указана как зависимость b & 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 ]

3 голосов
/ 10 января 2011
build: x y

x: target=build
y: target=prepare

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

См. Также Правило make-файла GNU, генерирующее несколько целей из одного исходного файла , поскольку оно является ответом на проблему, противоположную этой.

1 голос
/ 02 августа 2009

Вы пытаетесь сделать что-то вроде этого:

.PHONY: a b c

define print-hi
@echo HI
endef

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