Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.os.unix > #7815

Make écrase mes fichiers !

From Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid>
Newsgroups fr.comp.os.unix
Subject Make écrase mes fichiers !
Date 2021-10-12 22:02 +0200
Organization Université de Strasbourg
Message-ID <87fst657vq.fsf@universite-de-strasbourg.fr.invalid> (permalink)

Show all headers | View raw


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 (); }

Back to fr.comp.os.unix | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

Make écrase mes fichiers ! Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2021-10-12 22:02 +0200
  Re: Make écrase mes fichiers ! Olivier Miakinen <om+news@miakinen.net> - 2021-10-12 22:14 +0200
    Re: Make écrase mes fichiers ! Olivier Miakinen <om+news@miakinen.net> - 2021-10-15 18:44 +0200
    Re: Make écrase mes fichiers ! Alain Ketterlin <alain@universite-de-strasbourg.fr.invalid> - 2021-10-17 16:14 +0200
      Re: Make écrase mes fichiers ! Thomas <fantome.forums.tDeContes@free.fr.invalid> - 2021-10-18 06:07 +0200

csiph-web