Проблема подстановки GNU Makefile: использование% дважды - PullRequest
2 голосов
/ 26 мая 2020

Я пытаюсь использовать ссылку на замену GNU Make, но мне нужно дважды сослаться на% в замене. И это работает не так, как я ожидал. Вот мой Makefile:


foo := io protocol util
bar := $(foo:%=../Lib%/obj/lib%.a)

default: ; @echo bar = $(bar)

Я хочу получить в итоге:

bar = ../Libio/obj/libio.a ../Libprotocol/obj/libprotocol.a ../Libutil/obj/libutil.a

Но вот что я получаю:

../Libio/obj/lib%.a ../Libprotocol/obj/lib%.a ../Libutil/obj/lib%.a```

I've read the GNU Make reference manual, and I don't see any mention or examples of using % twice in one statement. I don't even know if it is possible.

Any help would be greatly appreciated.

1 Ответ

3 голосов
/ 26 мая 2020

Как вы обнаружили, читая руководство, невозможно использовать шаблон дважды. Расширяется только первый: остальные просто считаются буквальными символами.

Вместо этого вы можете использовать функцию foreach:

bar := $(foreach F,$(foo),../Lib$F/obj/lib$F.a)
...