2009-08-24 6 views
30

У меня есть список путь к файлу так:makefile: как добавить префикс в basename?

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.... 

любая идея?

ответ

55

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

Вот пример, который мы используем с adduffix для размещения файлов obj в одном каталоге ниже источника.

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

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

С макияжем руководство: http://www.gnu.org/software/make/manual/make.html

 
$(addprefix prefix,names...) 

The argument names is regarded as a series of names, separated by whitespace; 
prefix is used as a unit. The value of prefix is prepended to the front of each 
individual name and the resulting larger names are concatenated with single 
spaces between them. For example, 

       $(addprefix src/,foo bar) 

produces the result `src/foo src/bar'. 
+1

ах спасибо! Я знал о функциях addprefix/addeduffix, но мне не хватало функции соединения ... – dm76

+0

Я согласен с оценкой dm76, что действительно ключевым значением этого прекрасного ответа является join(). –

Смежные вопросы