2013-05-27 13 views
12

Ho una lista di nomi di file:Come rimuovere rimuovere estensioni diverse da un elenco di parole in GNU make?

FILES := a.b c.d e.f 

e voglio rimuovere le estensioni (suffissi) di tutte le parole di ottenere:

a c e 

qual è il modo migliore per farlo?

il meglio che potevo venire con era "barare" con le coperture:

$(shell for f in $(INS_NODIR); do echo -n "$${f%.*} "; done) 

ma sono sorpreso che non c'era un modo più "built-in" di fare questo solo con le funzioni built-in make .

cosa ho provato:

  • patsubst. Sembra che possa avere solo un singolo carattere jolly, altri essere trattati letteralmente e mi piacerebbe fare qualcosa come %.%, %

  • cercare una funzione notsufix.

    Mi ha sorpreso che questo non esiste, dal momento che la funzione dir ha notdir controparte, ma la funzione suffix che estrae esattamente le estensioni non avere un notsuffix controparte

risposta

21

Semplice, basta:

NAMES = $(basename $(FILES)) 

Vedere la sezione manuale di GNU su Functions for File Names

+0

tnx ... I Avevo visto quella pagina, sfogliato tutte le funzioni, ma supponevo che 'basename 'avrebbe fatto lo stesso dell'utilità POSIX (lasciare tutto ciò che viene dopo l'ultimo'/') e quale è l'idea di definizione più comune che mi viene in mente per basename oggi –

Problemi correlati