makefile: как добавить префикс к базовому имени?

У меня есть список путей к файлам:

FILE_PATH := a1.so a2.so bla/a3.so bla/a3.so bla/blo/a4.so....

Мне нужно добавить префикс к базовому имени, чтобы получить:

FILE_PATH_PREFIX := liba1.so liba2.so bla/liba3.so bla/liba3.so bla/blo/liba4.so....

Есть идеи ?


person dm76    schedule 24.08.2009    source источник


Ответы (1)


Посмотрите на функцию Make addprefix.

Here is an example we use with `addsuffix` to place obj files one directory below
the source.


SOURCE += MainThread.cpp
SOURCE += Blah.cpp

OBJ=$(join $(addsuffix ../obj/, $(dir $(SOURCE))), $(notdir $(SOURCE:.cpp=.o)))

Из руководства make:

$(addprefix prefix,names...)

Имена аргументов рассматриваются как последовательность имен, разделенных пробелом; префикс используется как единица. Значение префикса добавляется перед каждым отдельным именем, а получившиеся более крупные имена объединяются с одинарными пробелами между ними. Например,

$(addprefix src/,foo bar)

дает результат src/foo src/bar.

person RC.    schedule 24.08.2009
comment
ах спасибо! Я знал о функциях addprefix/addsuffix, но мне не хватало функции соединения... - person dm76; 24.08.2009
comment
Я согласен с оценкой dm76, что действительно ключевым значением этого прекрасного ответа является join(). - person John McGehee; 18.07.2017