Please don't top-post. On Thursday, March 01, 2012 10:00 AM, Mark Galeck (CW) wrote: > With this makefile > > ./foobar: > touch $@ > > make prints "touch foobar" .
On Thu, 2012-03-01 at 10:17 -0800, Mark Galeck (CW) wrote: > I know the manual says "$@ is the _file_ name" but surely, this does > not literally mean "only the file name not the directory". For > example, dir/foobar works. Also dir/./foobar works. Only "." at the > very beginning does not work. No, it does not literally mean that. This is a special feature to handle only "./" (and "././", etc.) that was added to GNU make a long, long time ago; from the manual: * Strip leading sequences of `./' from file names, so that `./FILE' and `FILE' are considered to be the same file. It has been considered a bug before, and I don't necessarily disagree. That is, I'm OK with make recognizing that the strings "./foo" and "foo" refer to the same file on the disk for the purposes of determining out-of-dateness etc. but I don't think make should be changing the value of $@. On the other hand, what should make do if it sees two rules like: ./foo: ; @echo with dir foo: ; @echo without dir ...? See also https://savannah.gnu.org/bugs/index.php?10708 -- ------------------------------------------------------------------------------- Paul D. Smith <psm...@gnu.org> Find some GNU make tips at: http://www.gnu.org http://make.mad-scientist.net "Please remain calm...I may be mad, but I am a professional." --Mad Scientist _______________________________________________ Help-make mailing list Help-make@gnu.org https://lists.gnu.org/mailman/listinfo/help-make