Salut Vincent :-)
et merci pour ces explications... en fait la ligne tabstop=4 était bien
présente dans mon virmc mais il y avait une autre ligne qui le faisait
insérer des espaces au lieu d'une tabulation... bref, c'est résolu... à
part ce problème de variables. Quand tu dis qu'il faut écrire $$i celà
faut pour les variables Bash seulement ou aussi pour celles définies
dans mon Makefile ? Comme $(CC) ou $(CFLAGS) ?
Bon, d'autre part, je viens de me rendre compte que ce que je faisais
était pas très clean, utiliser comme nom CC et CFLAGS pour des variables
qui désigne en fait un compilateur et des options pour C++... quelqu'un
connait le nom correct à utiliser pour ce langage ? J'ai lu quelque part
quelque chose du genre CXXFLAGS mais je ne suis pas tout à fait sûr :)
Le 03/09/2010 15:07, Vincent BRACH a écrit :
Salut Léo et bonjour à tous,
justement je me demandais si Make accordait une réelle importance à
l'indentation. J'ai configuré mon Vim pour insérer 4 espaces au lieu
d'une tab (plus standard), mais peut être que j'ai mal fait... si
quelqu'un a plus de précisions sur le sujet :)
Tout à fait : l'outil make accorde la plus grande importance à
l'écriture du Makefile au niveau de ce que tu appelles l'indentation :
je dirais plus au niveau "rubrique".
- Si une ligne ne commence pas par une tabulation il s'agit de
déclaration de variables (ou constantes) et/ou d'une cible dans le
Makefile.
- Si une ligne commence par une tabulation (attention j'ai bien dit
une tabulation et pas plusieurs espaces) il s'agit d'une ligne
d'exécution d'une commande (en générale dans une cible).
Petit test entre geek :) :
gvim (trés bon éditeur, n'en déplaise a certains "puristes") sait
d'ailleurs très bien faire la différence : faites le test : écrire un
Makefile dans gvim avec une cible (.o:.c par exemple) et à la ligne
suivante écrivez votre ligne de commande (par exemple un "@cat
/etc/issue") essayer en mettant en début de ligne des espaces puis
essayer avec une seule tabulation : gvim effectue une coloration
syntaxique différente ! le Makefile avec des espace en début d'une
ligne de commande ne fonctionnera pas.
En règle général une cible d'un Makefile s'écrit :
cible: dépendances
[TAB]Ligne de commande
Un très bon tutoriel (en français en plus) que je conseil vivement :
http://gl.developpez.com/tutoriel/outil/makefile/Makefile.pdf
Attention également au variable dans un Makefile : en général
$(variable).
Si on écrit en shell par exemple un :
for i in `find /tmp | grep txt` ; do echo $i ; done
on écrira dans un Makefile cette commande de la manière suivante :
for i in `find /tmp | grep txt` ; do echo $$i ; done
Je suis amené régulièrement à écrire des Makefile parfois assez
complexes et me fait souvent piégé avec ce genre d'écriture...
Si vous le souhaitais je serais prêt à organiser un Atelier Makefile
pour Linux-Azur (peut-être courant octobre) : avis aux amateurs ( ?? )
A+ et à vous lire,
Vincent
Diffusez cette liste aupres de vos relations :-)
Linux Azur : http://www.linux-azur.org
Vous etes responsable de vos propos.
*** Merci de rediger sans SMS, ni HTML ni PJ ***
Diffusez cette liste aupres de vos relations :-)
Linux Azur : http://www.linux-azur.org
Vous etes responsable de vos propos.
*** Merci de rediger sans SMS, ni HTML ni PJ ***