LINUX.ORG.RU

Makefile вызов цели


0

1

$ cat Makefile

.PHONY: a
a:
        @echo "a";


.PHONY: b
b:
        @echo "b";

есть две цели 'a' и 'b'. как сделать так чтобы при вызове make b цель 'b' вызывала код цели 'a' ?

★★★★

Ответ на: комментарий от cdslow

нет зависимость нельзя указывать. дело в том что b должен решить код какой цели звать 'a' или там 'c' в зависимости от флагов

quest ★★★★
() автор топика
Ответ на: комментарий от quest

Напишу на BSD make, не помню как в этом вашем gmake условия пишутся:

a:
    @echo a

.if ${FOO} == "BAR"
b: a
.else
b: c
.endif
    @echo b

либо

a:
    @echo a

b:
.if ${FOO} == "BAR"
    @${MAKE} a
.else
    @${MAKE} c
.endif
    @echo b

и второе - единственный способ если условие считается в теле цели (т.е. шеллом):

a:
    @echo a

b:
    @if [ "$foo" = "BAR" ]; then \
        ${MAKE} a; \
    else \
        ${MAKE} c; \
    fi
    @echo b

Только помните что sub-make можно вызывать ТОЛЬКО как ${MAKE}, ни в коем случае не просто make, поскольку бинарник может называться как угодно и возможна передача в sub-make дополнительных флагов.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

да, спасибо! уже нашел про @$(MAKE) a

quest ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.