Quel est le premier “@” à la recette d’un makefile

Dans un makefile généré par éclipse, je vois les règles suivantes:

./Cores/$(TARGET).core.3.srec : ../$(TARGET).core.3/Debug/$(TARGET).core.3.elf @mkdir -p ./Cores/ @e-objcopy --srec-forceS3 --output-target srec "$<" "$@".temp @echo Creating srec file for CoreID\ @head --lines=1 "$@".temp | sed 's/0000/0826/' > "$@" @tail --lines=+2 "$@".temp >> "$@" 

Quel est le but du ” @ ” au début des lignes de recette?

En parcourant le manuel de l’utilisateur de GNU Make, je n’ai pas trouvé de référence à cette utilisation de @. J’ai alors supposé qu’il est réellement transféré tel quel sur le shell.

Donc, en lisant le manuel de BASH, le seul endroit où je pourrais me rapporter à cette utilisation est la substitution de commande lorsque l’option extglob est définie. Cependant, essayer ceci dans la ligne de commande m’a donné une erreur.

Le préfixe @ provoque l’exécution de la commande en mode silencieux. Voir cette section du manuel GNU make .

Le @ supprime l’écho de la commande lors de l’exécution de la recette, voir https://stackoverflow.com/a/867093/60462 .