Il y a trois utilisations indépendantes d' @
ici.
Dans $@
, le caractère @
est le nom d'une variable automatique qui peut être utilisée dans une règle. La valeur de cette variable est la cible que la règle construit.
Lorsque @
est utilisé au tout début d'une ligne de recette (commande), juste après le caractère de tabulation, il empêche l' impression de la commande lorsqu'elle est sur le point d'être exécutée.
Le personnage @
ailleurs n'est pas spécial.
Ainsi, dans votre exemple, pour construire program
:
- La
file
fonction est invoquée. Il écrit les dépendances de la cible ( $^
variable automatique) dans le fichier program.in
.
Quelle que soit la commande stockée dans la variable CMD
est exécutée, avec les paramètres stockés dans la variable CMDFLAGS
, plus le paramètre supplémentaire @program.in
. Ce que cela fait dépend de ce qui CMD
est.
La commande rm program.in
est exécutée, sans l'imprimer au préalable.
Quelques commandes traitent un paramètre commençant par @
comme indiquant un fichier à partir duquel lire plus de paramètres. Il s'agit d'une convention DOS qui a vu le jour car DOS avait une limite stricte sur la longueur de la ligne de commande et aucun moyen d'interpoler la sortie d'une commande dans une ligne de commande. Il est rare dans le monde Unix car Unix n'a pas ces limitations. L'effet de la recette est donc probablement le même que
$(CMD) $(CMDFLAGS) $(OBJECTS)
Gilles 'SO- arrête d'être méchant'
la source
>[email protected]
est utilisé comme mode de fichier ... mais il est utile à sa manière .. merci cuonglm ...