2011-05-26 8 views
17

J'essaie de filtrer les chaînes qui contiennent un caractère particulier, mais cela ne fonctionne pas. Je suppose que make ne prend pas en charge plusieurs modèles %?Makefile: Filtrer les chaînes contenant un caractère

.PHONY: test 
test: 
    echo $(filter-out %g%, seven eight nine ten) 

donne:

$ make test 
echo seven eight nine ten 
seven eight nine ten 

Il ne filtre pas "huit"? En fait ce que je veux faire est de filtrer à partir d'une liste de noms de fichiers ceux contenant "$". (Dans un contexte Java.)

N'importe quel espoir, ou dois-je utiliser $(shell)?

Merci.

+0

Je ne vois aucune façon de le faire dans faire lui-même. –

+5

Comme le dit la documentation, seul le premier caractère '%' est un caractère générique - les caractères '%' suivants correspondent à des caractères littéraux% dans tout ce que vous apportez. Donc, votre commande filtre les noms qui se terminent par 'g%' –

Répondre

22

La fonction suivante répond-elle à l'objectif?

FILTER_OUT = $(foreach v,$(2),$(if $(findstring $(1),$(v)),,$(v))) 
$(call FILTER_OUT,g, seven eight nine ten) 
+0

Wow. Merci! N'ont jamais utilisé ces fonctions auparavant. – Steve

+0

Heureux qu'il a aidé :-) –

+0

Assurez-vous que le modèle n'a pas d'espaces supplémentaires: ', pat,' et ', pat,' sont ** façon ** différente. – 0x6adb015

7

J'ai récemment fait quelque chose de similaire en utilisant deux wildcards fonctions pour exclure certains fichiers

Questions connexes