рекурсивный вопрос gmake - PullRequest
       8

рекурсивный вопрос gmake

2 голосов
/ 07 августа 2009

Мне нужно написать быстрый make-файл для сборки всех моих проектов. Это код C ++, и я использую gmake.

Скажем, у меня есть список каталогов, я хочу перейти к каждому из них, выполнить команду gmake и, если это удастся, перейти к следующей и т. Д.

Я приготовил это, посмотрев руководство по gmake

.PHONY: all clean dirs $(DIRS)

dirs: $(DIRS)

$(DIRS): \n\t
    $(MAKE) -C $@

Это работает для цели "все" - если я просто наберу gmake, это будет правильно. Но если я сделаю gmake clean, он ничего не сделает.

Я учу gmake по ходу дела, поэтому я, безусловно, делаю что-то глупое:)

Спасибо за любую помощь.

1 Ответ

8 голосов
/ 07 августа 2009

Чтобы рекурсивно сделать что-то отличное от первой цели (я полагаю, все это ваша первая цель), вам нужно дать подсубье идею о том, что строить. Это можно сделать с помощью переменных MAKEFLAGS и MAKECMDGOALS.

Например:

$(DIRS):
        $(MAKE) -C "$@" $(MAKEFLAGS) $(MAKECMDGOALS)

Ваше правило не передавало имена целей, например чистый, так что подмейке не было работы (так как все уже собрано).

...