Make écrase mes fichiers !

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

J'ai un problème étrange avec le makefile suivant :

# --------
name: name.tab.o name.o

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

J'ai deux fichiers source, name.y (la grammaire Yacc) et name.c (un
main) -- vous avez un contenu "minimal" après ma signature.

Avec ces trois fichiers, si name.c est plus récent que name.y, "make"
(GNUmake 4.1) fait :

| cc    -c -o name.o name.c
| bison name.y
| cc    -c -o name.tab.o name.tab.c
| cc   name.o name.tab.o   -o name

Exactement ce que je veux. Si maintenant je fais "touch name.y ; make"
(ou si name.y est le plus récent des deux au départ), voilà ce qui se
passe :

| yacc  name.y
| mv -f y.tab.c name.c
| cc    -c -o name.o name.c
| bison name.y
| ...

WHAT THE FUCK ! Make commence par écraser mon fichier name.c (par
yacc+mv) juste parce qu'il a une règle pour le faire.

Je veux bien croire que make a un peu de boulot avec toutes ces règles
implicites à appliquer, mais là il écrase mon fichier... (ajouter une
dépendance "name.o: name.c" avec ou sans commande ne règle pas le
problème).

Y a-t-il un moyen de lister les fichiers source ? Ou en tout cas les
fichiers à ne pas écraser ?

make --version dit

| GNU Make 4.1
| Built for x86_64-pc-linux-gnu
| ... (licence omise)

Vous avez un avis ? (Inutile de dépiauter les règles implicites, je me
pose une question de principe dans ce cas.)

-- Alain.

PS : deux fichiers minimaux (qui compilent) si vous voulez répéter
l'expérience

// name.y
%{
int yylex() { return 0; }
int yyerror (const char * msg) {}
%}
%%
input: %empty;
%%

//name.c
extern int yyparse();
int main (void) { return yyparse (); }

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