Что $ <и $ @ представляют в Makefile? - PullRequest
11 голосов
/ 29 мая 2009

Кто-нибудь может объяснить, пожалуйста, значение $< и $@ в Makefile?

Ответы [ 2 ]

21 голосов
/ 29 мая 2009

$< соответствует первому "предварительному условию" в правиле make, а $@ оценивается как "target" в правиле make.

Вот пример:

file.o : file.c
        $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@

В этом случае $< будет заменено на file.c, а $@ будет file.o.

Они более полезны в общих правилах, таких как:

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

Подробнее см. в этом руководстве .

6 голосов
/ 29 мая 2009

$@ является целью текущего правила. $< - это имя первой предпосылки («источника») текущего правила.

Так, например:

.c.o:
        $(CC) -c $(CFLAGS) -o $@ $<

Это расширит до команды что-то вроде:

gcc -c -Wall -o foo.o foo.c

См. Также руководство по эксплуатации GNU § 10.5.3, «Автоматические переменные» .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...