Vous ne devriez pas faire cela, vous êtes briser le modèle de base de comment se Faire des travaux. Mais ici, il est:
action:
@echo action $(filter-out $@,$(MAKECMDGOALS))
%: # thanks to chakrit
@: # thanks to William Pursell
EDIT:
Pour expliquer la première commande,
$(MAKECMDGOALS)
est la liste de "cibles" énoncées dans la ligne de commande, par exemple "action valeur1 valeur2".
$@
est une variable automatique pour le nom de la cible de la règle, dans ce cas, "l'action".
filter-out
est une fonction qui supprime certains éléments d'une liste. Donc, $(filter-out bar, foo bar baz)
retours foo baz
(il peut être plus subtil, mais nous n'avons pas besoin de subtilité ici).
Mettre ces ensemble et $(filter-out $@,$(MAKECMDGOALS))
retourne la liste de cibles spécifiées sur la ligne de commande autre que "l'action", qui peut être "valeur1 valeur2".