2009-08-24 9 views
30

que tienen una lista de ruta del archivo así:makefile: cómo agregar un prefijo al nombre base?

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

tengo que añadir un prefijo al nombre base con el fin de conseguir:

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

alguna idea?

Respuesta

55

Mire la función de complemento de Make.

Aquí hay un ejemplo que usamos con addsuffix para colocar los archivos obj en un directorio debajo de la fuente.

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

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

Desde el manual de make: 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 gracias! Sabía acerca de las funciones addprefix/addsuffix pero me faltaba la función de unión ... – dm76

+0

Estoy de acuerdo con la evaluación dm76 'de que el valor clave de esta buena respuesta es join(). –

Cuestiones relacionadas