Вы, вероятно, не должны этого делать; вы нарушаете основную схему того, как работает Make. Но вот оно:
action:
@echo action $(filter-out $@,$(MAKECMDGOALS))
%: # thanks to chakrit
@: # thanks to William Pursell
EDIT:
Чтобы объяснить первую команду,
$(MAKECMDGOALS)
- это список «целей», указанных в командной строке, например, "действие значение1 значение2".
$@
является автоматической переменной для имени цели правила, в данном случае «действие».
filter-out
- это функция, которая удаляет некоторые элементы из списка. Так что $(filter-out bar, foo bar baz)
возвращает foo baz
(это может быть более тонким, но нам здесь не нужна тонкость).
Соедините их вместе и $(filter-out $@,$(MAKECMDGOALS))
вернет список целей, указанных в командной строке, кроме «action», который может быть «value1 value2».