2009-08-24 9 views
30

J'ai une liste de chemin de fichier comme ça:makefile: comment ajouter un préfixe au basename?

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

Je dois ajouter un préfixe au nom de base afin d'obtenir:

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

une idée?

Répondre

55

Regardez la fonction addprefix de Make.

Voici un exemple que nous utilisons avec addsuffix pour placer les fichiers obj un répertoire en dessous de la source.

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

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

du manuel de marque: 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 merci! Je connaissais les fonctions addprefix/addsuffix mais il me manquait la fonction de jointure ... – dm76

+0

Je suis d'accord avec l'assertion de dm76 que la valeur clé de cette bonne réponse est en effet join(). –

Questions connexes