2011-05-26 20 views
17

Belirli bir karakteri içeren dizeleri filtrelemeye çalışıyorum, ancak çalışmıyor. Ben make birden çok % desenleri desteklemiyor mu sanırım?Makefile: Karakterleri içeren dizeleri filtrele

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

verir:

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

O "sekiz" filtre etmiyor? Aslında yapmak istediğim, "$" içeren dosya isimleri listesinden çıkar. (Java içeriğinde.)

Herhangi bir ümit mi, yoksa $(shell) mu kullanmam gerekiyor?

Teşekkürler.

+0

bazı dosyaları hariç için iki wildcards işlevleri kullanarak benzer bir şey yaptı. –

+5

Belgelerin belirttiği gibi, yalnızca ilk '%' karakter bir joker karakterdir; daha sonra, '% 'karakterleri, eşleşen her karakterde gerçek% karakterleriyle eşleşir. Böylece, komutunuz "g% –

cevap

22

Aşağıdaki işlev amaçlara uygun mu?

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

Wow. Teşekkürler! Bu fonksiyonları daha önce hiç kullanmadım. – Steve

+0

Yardım ettiğine sevindim :-) –

+0

Desenin fazladan boşluk içermediğinden emin olun: ', pat,' ve ', pat,' ** yol ** farklı. – 0x6adb015

7

Geçenlerde marka kendisi bunu yapmanın hiçbir yol göremiyorum