Ви, мабуть, не повинні цього робити; ви порушуєте основну схему того, як працює Make. Але ось це:
action:
@echo action $(filter-out $@,$(MAKECMDGOALS))
%: # thanks to chakrit
@: # thanks to William Pursell
EDIT:
Щоб пояснити першу команду,
$(MAKECMDGOALS)
- це список "цілей", написаний у командному рядку, наприклад, "value value1 value2".
$@
є автоматичною змінною для назви цілі правила, в даному випадку "дії".
filter-out
це функція, яка видаляє деякі елементи зі списку. Отже, $(filter-out bar, foo bar baz)
повертається foo baz
(це може бути більш тонким, але тут нам не потрібні тонкощі).
Складіть їх разом і $(filter-out $@,$(MAKECMDGOALS))
повертає список цілей, вказаних у командному рядку, відмінному від "action", який може бути "value1 value2".