Re: récupérer le résultat d'une commande dans un Makefile

Top Page

Reply to this message
Author: Christophe LYON
Date:  
To: Patrice Karatchentzeff
CC: ML Guilde
Subject: Re: récupérer le résultat d'une commande dans un Makefile

>>VAR=$(shell echo *.c)
>>toto:
>>         echo $(VAR)

>
>
> En fait, le soucis vient quand la réponse n'est pas un bloc de caractères...
>
> Si tu as des espaces, des lignes multiples, etc., cela ne fonctionne pas.
>


Le pb vient plutot des lignes multiples, puisque l'exemple ci-dessus
retourne tres bien la liste des fichiers.

Par contre si je fais
VAR=$(shell cat hello.c)

il faut aussi que je rajoute des "" dans la commande echo (sinon le '#' 
de #include qui commence mon hello.c est interprete comme un commentaire 
shell)
j'ai donc:
VAR=$(shell cat hello.c)
toto:
         echo "$(VAR)"


et make toto me donne:
echo "#include <stdio.h>  int main() {  printf("hello\n");      return 
0;  }"
#include <stdio.h>  int main() {        printf(hellon);         return 0;  }



Ca devient complique a cause des caracteres speciaux contenus dans le 
fichier qui sont interpretes par le shell et si je mets des ' au lieu 
des "", ca donne:
         echo '$(VAR)'
et make toto:
echo '#include <stdio.h>  int main() {  printf("hello\n");      return 
0;  }'
#include <stdio.h>  int main() {        printf("hello\n");      return 0;  }


ce qui est mieux, mais perd toujours les sauts de ligne

Christophe.