Re: Make écrase mes fichiers !

Liste des GroupesRevenir à fco unix 
Sujet : Re: Make écrase mes fichiers !
De : alain (at) *nospam* universite-de-strasbourg.fr.invalid (Alain Ketterlin)
Groupes : fr.comp.os.unix
Date : 17. Oct 2021, 16:14:23
Autres entêtes
Organisation : Université de Strasbourg
Message-ID : <87sfwz68n4.fsf@universite-de-strasbourg.fr.invalid>
References : 1 2
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)

Je réponds ici à (l'autre message de) Olivier pour garder un peu de
contexte.

Olivier Miakinen <om+news@miakinen.net> writes:

# --------
name: name.tab.o name.o
 
name.tab.c: name.y
bison name.y
# --------

Bon, déjà on pourrait argüer que ce n'est pas une bonne idée d'avoir
deux fichiers sources qui ne diffèrent que par une extension connue
de make. Mais voyons plus loin.

On pourrait, mais d'une part c'est un projet où j'ai plusieurs sources
yacc/bison et je suis allé au plus simple, d'autre part la règle make
"%.y: %.c" est contraire aux conventions de yacc (qui produit par défaut
y.tab.c) ou de bison (qui produit %.tab.c). D'où ma surprise.

[...]
 
| yacc  name.y
| mv -f y.tab.c name.c
| cc    -c -o name.o name.c
| bison name.y
| ...
>
Donc oui, c'est clairement une règle implicite pour faire un fichier .c
à partir d'un fichier .y -- implicite puisque dans ton makefile tu ne
définis qu'une règle avec bison et aucune avec yacc.
>
Si tu veux conserver name.y et name.c comme deux fichiers *sources*
indépendants, alors je vois ceci :
>
man make
...
       -r, --no-builtin-rules
            Eliminate  use of the built-in implicit rules.  Also clear
            out the default list of suffixes for suffix rules.
...

Ben oui, mais les règles implicites pour C sont bien pratiques (avec
CFLAGS etc.) J'ai finalement changé mes conventions de nommage.

Je me demande si on ne pourrait pas imaginer une contrainte qui
empêcherait make d'utiliser une règle implicite quand les prérequis sont
mentionnés explicitement dans une règle avec une commande... Bref.

(Au passage, j'ai été piégé par une autre règle implicite, parce que
j'avais la règle suivante :

name.lex.c: name.lex
flex -o $@ $<

mais là make m'indique une circularité, à cause de sa règle "%: %.c". Ma
cible s'appelle maintenant name.dfa.c.)

Merci en tout cas pour ta réponse.

-- Alain.

Date Sujet#  Auteur
12 Oct 21 * Make écrase mes fichiers !5Alain Ketterlin
12 Oct 21 `* Re: Make écrase mes fichiers !4Olivier Miakinen
15 Oct 21  +- Re: Make écrase mes fichiers !1Olivier Miakinen
17 Oct 21  `* Re: Make écrase mes fichiers !2Alain Ketterlin
18 Oct 21   `- Re: Make écrase mes fichiers !1Thomas

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal