Pour être franc, je préférerais ne pas te donner une solution. Je trouve très bof de demander quelque chose à l'utilisateur au moment de la compilation. Le mieux est de mettre en place l'environnement de compilation avant de commencer à compiler : fichier de conf avec des variables par exemple. Heureusement que ta compil' ne dure pas longtemps.
Je te propre ceci
1 2
|
read file ; gcc -c -Wall -ansi -DFILE=\"$$file\" $< |
La variable d'environnement file n'existe plus quant tu appelles gcc. Je mets donc tout sur la même ligne.
J'utilise $$file pour indiquer à make de ne pas remplacer $file mais juste $$ par $. La substitution de $file aura lieu au dernier moment à l'invocation de la commande
$file n'est donc plus une variable du Makefile mais une variable d'environnement donc suppression des parenthèses car sinon il appelle la commande file
-DVAR=value et non -DVAR value
Guillemets autour de $$file car sinon tu te retrouves dans ton code C avec contenu_de_file et non "contenu_de_file".
Mais à la place je te propose une solution plus propre qui ne fait pas intervenir l'utilisateur
1 2
|
gcc -c -Wall -ansi -DFILE=\"$(FILE)\" $< |
Soit tu définis FILE en haut de ton Makefile mais ce n'est pas ce que tu veux.
Soit tu définis une variable d'environnement FILE avant d'appeler make.
Soit et c'est ce qui me plaît le plus, tu passes la valeur de FILE à make
make FILE=contenu_de_file
Partager