2009-08-24 22 views
30

Ho un elenco di percorso di file del genere:makefile: come aggiungere un prefisso al basename?

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

ho bisogno di aggiungere un prefisso al nome di base al fine di ottenere:

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

qualche idea?

risposta

55

Guarda la funzione addprefix di Make.

Ecco un esempio che utilizziamo con addsuffix per posizionare i file obj una directory sotto all'origine.

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

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

Dal manuale marca: 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, grazie! Sapevo delle funzioni addprefix/addsuffix ma mancava la funzione join ... – dm76

+0

Sono d'accordo con dm76 'valutazione che in effetti il ​​valore chiave di questa risposta fine è join(). –

Problemi correlati