2011-05-26 12 views
17

मैं स्ट्रिंग को फ़िल्टर करने का प्रयास कर रहा हूं जिसमें एक विशेष वर्ण है, लेकिन यह काम नहीं करता है। मुझे लगता है कि make एकाधिक % पैटर्न का समर्थन नहीं करता है?मेकफ़ाइल: एक वर्ण युक्त स्ट्रिंग को फ़िल्टर करें

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

देता है:

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

यह पता फ़िल्टर नहीं करता "आठ"? दरअसल मैं जो करना चाहता हूं वह "$" वाले फ़ाइल नामों की सूची से फ़िल्टर किया जाता है। (जावा संदर्भ में।)

कोई उम्मीद है, या मुझे $(shell) का उपयोग करना है?

धन्यवाद।

+0

मैं खुद मेकअप में यह कर के किसी भी तरह से नहीं देख सकते हैं को छोड़कर के लिए दो wildcards कार्यों का उपयोग कर कुछ इसी तरह की थी। –

+5

जैसा कि प्रलेखन कहता है, केवल पहला '%' वर्ण वाइल्डकार्ड है - बाद में '%' वर्ण जो भी आप मेल खाते हैं, में शाब्दिक% वर्णों से मेल खाते हैं। तो आपका आदेश उन नामों को फ़िल्टर करता है जो 'g%' –

उत्तर

22

क्या निम्न कार्य उद्देश्य को पूरा करता है?

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

वाह में समाप्त होते हैं। धन्यवाद! पहले कभी उन कार्यों का उपयोग नहीं किया है। – Steve

+0

खुशी हुई इससे मदद मिली :-) –

+0

सुनिश्चित करें कि पैटर्न में अतिरिक्त रिक्त स्थान नहीं हैं: ', pat,' और ', pat,' ** ** ** अलग हैं। – 0x6adb015

संबंधित मुद्दे