Calcul de la variable Makefile lors de l'affectation
Dans un Makefile, je suis en train d'affecter le résultat d'une commande à une variable:
TMP=`mktemp -d /tmp/.XXXXX`
all:
echo $(TMP)
echo $(TMP)
mais
$ make Makefile all
est l'écho des 2 valeurs différentes, par exemple:
/tmp/.gLpm1T
/tmp/.aR4cDi
Quelle est la syntaxe pour mktemp être calculée sur une affectation de variable?
Merci.
source d'informationauteur abernier
Vous devez vous connecter pour publier un commentaire.
Cela dépend du goût de faire. Avec GNU Make, vous pouvez utiliser
:=
au lieu de=
comme dansModifier Comme l'a souligné Novelocrat, le
=
affectation diffère de:=
affectation dans que les valeurs attribuées à l'aide de=
seront évaluées lors de la substitution (et donc, à chaque fois, la variable est utilisée), alors que:=
variables assignées les valeurs seront évaluées qu'une seule fois (lors de l'affectation), et par conséquent, les valeurs sont fixes par la suite. Voir la la documentation de GNU Make pour une explication plus détaillée.Dans l'ordre de la valeur pour être vraiment en constante après la cession, même si, il ne doit pas contenir de parties, ce qui pourrait être spécial pour le shell (qui
make
des appels afin de gérer les règles de mise à jour, etc.) En particulier, les backticks sont à éviter. Au lieu de cela, l'utilisation de GNUmake
'built-in fonction shell et semblable à atteindre vos objectifs.Si vous utilisez GNU Make, au lieu d'utiliser des backticks, utilisez
$(shell ...)
. Par exemple,