Что делает $ <и $ представляют в Make-файле?

Попробуйте Iconv

1.9.3p194 :001 > require 'iconv'
# => true 
1.9.3p194 :002 > string = "testing\xC2 a non UTF-8 string"
# => "testing\xC2 a non UTF-8 string" 
1.9.3p194 :003 > ic = Iconv.new('UTF-8//IGNORE', 'UTF-8')
# => #<Iconv:0x000000026c9290> 
1.9.3p194 :004 > ic.iconv string
# => "testing a non UTF-8 string" 
11
задан Jens 20 May 2012 в 12:28
поделиться

2 ответа

$ < оценивается как первое «предварительное условие» в правиле make, а $ @ оценивается как «цель» в правиле make.

Вот пример:

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

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

Они более полезны в общих правилах, подобных этому:

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

См. это руководство для получения дополнительной информации.

21
ответ дан 3 December 2019 в 03:36
поделиться

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

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

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

Это будет расширено до команды примерно такого вида:

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

См. Также GNU make manual § 10.5.3, «Автоматические переменные» .

6
ответ дан 3 December 2019 в 03:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: