2011-05-26 9 views
17

Estoy intentando filtrar las cadenas que contienen un caracter en particular, pero no funciona. Supongo que make no es compatible con múltiples patrones %?Makefile: Filtrar cadenas que contienen un carácter

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

Da:

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

No filtrar "ocho"? En realidad, lo que quiero hacer es filtrar de una lista de nombres de archivos aquellos que contienen "$". (En un contexto de Java.)

¿Alguna esperanza, o tengo que usar $(shell)?

Gracias.

+0

que no puedo ver ninguna manera de hacerlo en hacerse. –

+5

Como dice la documentación, solo el primer carácter '%' es un comodín; los caracteres posteriores '% 'coinciden con el literal% de caracteres en lo que sea que esté haciendo coincidir. Por lo tanto, su comando filtra los nombres que terminan en 'g%' –

Respuesta

22

¿La siguiente función cumple con el propósito?

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

Wow. ¡Gracias! Nunca he usado esas funciones antes. – Steve

+0

Me alegro de que haya ayudado :-) –

+0

Asegúrese de que el patrón no tenga espacios adicionales: ', pat,' y ', pat,' son ** camino ** diferentes. – 0x6adb015

7

poco hizo algo similar con dos funciones wildcards para excluir algunos archivos

Cuestiones relacionadas