Как называется специальная переменная Makefile 'match'? - PullRequest
1 голос
/ 25 октября 2010

Какое имя специальной переменной Makefile, содержащей совпадение %, для использования в теле правила?

В качестве примера я хотел бы использовать это так:

%.o: %.c
             @echo Matched $MATCH
             $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@

, куда я положил $MATCH, потому что я не могу вспомнить фактическое имя этой специальной переменной сопоставления с образцом.

Другими словами, если пользователь говорит make foo.c, я хочу вывести Matched foo.

Я не нашел его здесь , но он существует, потому что я использовал его раньше ...

Ответы [ 2 ]

2 голосов
/ 07 декабря 2012

Из руководства по программному обеспечению GNU Make специальная переменная, на которую вы ссылаетесь - $*, неявное совпадение стволов:

Основа, с которой неявное правило соответствует(см. Как сопоставляются шаблоны).Если целью является dir/a.foo.b, а целевым шаблоном является a.%.b, то ствол является dir/foo.Ствол полезен для построения имен связанных файлов .

0 голосов
/ 25 октября 2010

Я не вижу конкретной переменной, но вот решение для вас:

%.o: %.c
    @echo Matched `basename $@ .o`
    $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
...