आपको शायद ऐसा नहीं करना चाहिए; तुम कैसे काम करता है के बुनियादी पैटर्न को तोड़ रहे हैं। लेकिन यहाँ यह है:
action:
@echo action $(filter-out $@,$(MAKECMDGOALS))
%: # thanks to chakrit
@: # thanks to William Pursell
संपादित करें:
पहले आदेश की व्याख्या करने के लिए,
$(MAKECMDGOALS)
कमांड लाइन पर "टारगेट" की सूची है, जैसे "एक्शन वैल्यू 1 वैल्यू 2"।
$@
नियम के लक्ष्य के नाम के लिए एक स्वचालित चर है , इस मामले में "कार्रवाई"।
filter-out
एक ऐसा कार्य है जो किसी सूची से कुछ तत्वों को निकालता है। तो $(filter-out bar, foo bar baz)
रिटर्न foo baz
(यह अधिक सूक्ष्म हो सकता है, लेकिन हमें यहां सूक्ष्मता की आवश्यकता नहीं है)।
इन्हें एक साथ रखें और $(filter-out $@,$(MAKECMDGOALS))
कमांड लाइन पर "कार्रवाई" के अलावा निर्दिष्ट लक्ष्यों की सूची लौटाएं, जो कि "value1 value2" हो सकता है।