%% Hua Yu <[EMAIL PROTECTED]> writes: hy> Well, I also noticed that gmake produces a different message in hy> this case, comparing to when it gets a non-existent target. If hy> target names are strings, the "No rule to make target ..." message hy> is much clearer and easier for me to debug the makefile.
hy> $ pwd hy> /home/hyu hy> $ cat Makefile hy> a.o: a.c hy> touch a.o hy> $ touch a.c hy> $ gmake ../hyu/a.o hy> gmake: Nothing to be done for `../hyu/a.o'. hy> $ gmake whatever hy> gmake: *** No rule to make target `whatever'. Stop. The reason you get different results is that "../hyu/a.o" exists, while "whatever" doesn't. If you "touch whatever", then run "gmake whatever", you'll get the "Nothing to be done for ..." message there as well. What happens is that make can't find a rule to build the target, but the target does exist, so make assumes it's up to date and gives the proper message. After all, remember if you list a header file as a prerequisite remember make will try to build that as well: you wouldn't want to get an error like "no rule to make target" if you didn't have a rule to build the .h file (which you probably don't). On the other hand, if the file is a prerequisite, doesn't exist, and make can't find any way to create it, then you get a "no rule to make target" error. -- ------------------------------------------------------------------------------- Paul D. Smith <[EMAIL PROTECTED]> Find some GNU make tips at: http://www.gnu.org http://www.paulandlesley.org/gmake/ "Please remain calm...I may be mad, but I am a professional." --Mad Scientist _______________________________________________ Bug-make mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-make