Makefile с категориями - PullRequest
       3

Makefile с категориями

1 голос
/ 02 декабря 2011

Представьте, что у меня есть файлы, которые классифицированы в моей голове, но не могут быть различены по какой-либо схеме именования, и они находятся в одном каталоге:

apple cherry celery onion

У меня есть два правила: один рецепт для пирога и один для супа.

Если я реализую эти рецепты как неявные правила:

fruits:= apple cherry
vegetables:= celery onion

%.soup : %
        @echo "making soup"
        cp $< $@

%.pie : %
        @echo "making pie"
        cp $< $@

Тогда я позволю себе приготовить ужасную еду:

> touch celery
> make celery.pie
making pie 
cp celery celery.pie #bleech this should not be allowed

Но если я использую явные правила:

fruits:= apple cherry
vegetables:= celery onion

pies:=$(addsuffix .pie,$(fruits))
soups:=$(addsuffix .soup,$(vegetables))

$(pies) : $(fruits)
        @echo "making pie"
        cp $< $@


$(soups) : $(vegetables)
        @echo "making soup"
        cp $< $@

Я вынужден установить зависимости, которых нет на самом деле:

> touch apple
> make apple.pie
make: *** No rule to make target `cherry', needed by `apple.pie'.  Stop.

Как я могу сказать Make о категориях файлов?

1 Ответ

1 голос
/ 02 декабря 2011

Использование статических шаблонных правил :

fruits:= apple cherry
vegetables:= celery onion

$(vegetables:%=%.soup) : %.soup : %
        @echo "making soup"
        cp $< $@

$(fruits:%=%.pie) : %.pie : %
        @echo "making pie"
        cp $< $@
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...