Как добавить суффикс после автоматической переменной makefile? - PullRequest
1 голос
/ 18 марта 2019
OBJS := a.o b.o c.o

rule : $(OBJS)
  @echo $^
  @echo $^.bc // @echo a.o.bc b.o.bc c.o.bc -> what I want to do

Я хочу добавить суффикс после автоматической переменной $^

Однако, хотя я использую $^.bc, он показывает

a.o b.o c.o.bc

нет,

a.o.bc b.o.bc c.o.bc

Есть ли способы сделать это?

1 Ответ

1 голос
/ 18 марта 2019

Проблема

Автоматическая переменная $^ в вашем случае представляет собой разделенный пробелами список элементов, поскольку он расширяется до a.o b.o c.o.Следовательно, echo $^.bc приведет к a.o b.o c.o.bc вместо a.o.bc b.o.bc c.o.bc, поскольку суффикс .bc добавляется только к последнему элементу списка, т. Е. c.o.

Если вы хотитеполучить a.o.bc b.o.bc c.o.bc, тогда вам нужно добавить суффикс .bc к каждому отдельному элементу этого разделенного пробелами списка , а не только последнему.


Решение

Встроенная функция GNU Make addsuffix работает со списками:

OBJS := a.o b.o c.o

rule: $(OBJS)
    @echo $^
    @echo $(addsuffix .bc,$^)

Запуск make в make-файлевыше:

$ make
a.o b.o c.o
a.o.bc b.o.bc c.o.bc

производит вывод, который вы ищете.

...