bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Strange behaviour with make 3.79.1


From: thierry
Subject: Strange behaviour with make 3.79.1
Date: Tue, 20 Nov 2001 12:13:29 +0100

        Hello!

I've found a strange behaviour of make v3.79.1. A sample of the Makefile is
joined with this mail. The interesting part is the $(BASE) rule:

$(BASE): $(BASE).h $(OBJ2) $(OBJ1).o
        @echo "it's okay..."

This rule indicate to generate $(BASE).h if it doesn't exists, a special rule
has been created for that, which looks like after substitution:
$(BASE).h:
        touch $(BASE).h foo-def.c foo-ijk.c foo-xyz.c

The second part of the $(BASE) rule, indicate to generate "foo-def.o foo-ijk.o 
foo-xyz.o"
(after substitution). For that, another special rule exists:
%.o: %.c
        touch %.o

This indicates that starting with a .c file, we can generate a .o file. But here
make complains with:
$ make clean ; make
rm -f foo* abc.o
touch foo.h foo-def.c foo-ijk.c foo-xyz.c
make: *** No rule to make target `foo-def.o', required for `foo'. Stop.

More strange, running make a second time seems to solve the problem...
$ make
touch foo-def.o
touch foo-ijk.o
touch foo-xyz.o
touch abc.o
it's okay...

I presume that make read once directory content and then use this list for
checking file existence. Is this really a conveniant behaviour?

Thierry

Attachment: make-bugs.tgz
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]