LINUX.ORG.RU

[хочется странного] «Параметризация» правила Makefile

 


0

2

У меня проект состоит из нескольких подпроектов, каждый из которых находится в отдельном подкаталоге основного каталога проекта. Каждый подпроект собирается однотипным образом, поэтому я создаю один Makefile в каталоге проекта. Хочется иметь в нем нечто вроде следующего:

all:
PAT(all)
clean:
PAT(clean)

...

PAT(x):
@for i in *; do \
test -d $$i && make x -C $$i || echo «» >/dev/null; \
done


Чтобы не нужно было для каждого правила дублировать цикл. Как такое сделать в GNU make?

★★★★★
all clean:
  make "$@" -C ...

В правилах в Makefile можно указывать несколько целей. $@ — это имя собираемой цели.

dmitry_vk ★★★
()

PAT = foo $(1) bar $(2) whatever

target:
$(call PAT, baz, blarg)

tailgunner ★★★★★
()

Спасибо.

seiken ★★★★★
() автор топика


all: libA.a libB.a

lib%.a: %.c
echo $< $* $@

anonymous
()

посмотрите более прогрессивные системы сборки, например scons

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