2009-08-24 5 views
30

Mam listę ścieżki pliku tak:makefile: jak dodać prefiks do nazwy bazowej?

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

trzeba dodać przedrostek do nazwy bazowej w celu uzyskania:

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

jakiś pomysł?

Odpowiedz

55

Zobacz funkcję make addprefix.

Oto przykład, którego używamy z addsuffix do umieszczania plików obj jeden katalog poniżej źródła.

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

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

Z instrukcji Marka: 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

ah dzięki! Wiedziałem o funkcjach addprefix/addsuffix, ale brakowało mi funkcji łączenia ... – dm76

+0

Zgadzam się z oceną dm76, że rzeczywiście kluczową wartością tej drobnej odpowiedzi jest join(). –