著者: Christophe LYON 日付: To: Patrice Karatchentzeff CC: ML Guilde 題目: Re: récupérer le résultat d'une commande dans un Makefile
Patrice Karatchentzeff wrote: > Le 06/10/05, Laurent CHARLES<lcharles.ml@???> a écrit :
>
> [....]
>
>
>>Je proposais ça:
>>VAR=$$(ma_commande_unix)
>
>
> C'est la seconde partie de la solution en fait... ce qui permet
> d'inclure les retour-chariots qui manquaient dans la proposition de
> Christophe...
>
> Bon, je résume :
>
> + le shell (par $(shell macommande) de make est tout moisi... il
> n'émule même pas correctement le Bourne shell (d'où le problème de
> Christophe)
>
> + il faut externaliser la commande de la cible pour la faire
> fonctionner correctement
>
> + l'utilisation $$() permet d'utiliser un vrai shell (que l'on peut
> choisir en positionnant SHELL).
>
Je viens de relire la doc du GNU make a ce sujet:
- il est bien ecrit que $(shell cmd) a bien l'effet d'appeler la
commande et de retourner le resultat, en remplacant les newline par des
espace. On ne peut donc pas dire que le "shell de make est moisi" :-)
Il appelle bien le shell defini par $SHELL et fait un post-processing
- pour ce qui est de $$(), je ne connaissais pas et je ne trouve pas ca
dans la doc. La seule explication que je vois c'est que $$ est remplace
par '$' par make et il se retrouve alors a devoir executer $(cmd) qui
est une autre syntaxe du shell pour `cmd`.
Mais ce que je ne comprends pas, c'est comment make sait qu'il doit
faire executer $(cmd) par un shell?