Hi Magnus, On Thu, Mar 21, 2013 at 5:37 PM, Magnus Fromreide <[email protected]> wrote: > > On Thu, Mar 21, 2013 at 03:33:43PM -0700, Dave Hylands wrote: > > Hi Magnus, > > > > On Thu, Mar 21, 2013 at 2:25 PM, Magnus Fromreide <[email protected]> > > wrote: > > > > It compiles and builds the executable. This is because make has a bunch of > > builtin rules. Running "make -p" will print the builtin rules. > > Yes, but normally the builtin rules require some predecessor. In your case > the file hello-world.c the thing that enables the pattern rule '%: %.c'. > > In my case we have > > $ > Makefile > $ make target > make: *** No rule to make target `target'. Stop.
So that makes sense. Make will have looked for taget.c, and target.cpp, and all of the other builtin rules and not found any file/rule combination that will create target. > $ echo '.PHONY: target' > Makefile > $ make target > make: Nothing to be done for `target'. > > and my question is why there is a difference and wether there should be a > difference. I couldn't find anything about .PHONY making it's dependants into > targets in the manual. So for the phony target, I think that you'll find: .PHONY: a and .PHONY: a a: are really the same thing. And, in fact, if I run "make -d a" for each of those 2 cases, then I get the exact same debug output. -- Dave Hylands Shuswap, BC, Canada http://www.davehylands.com _______________________________________________ Help-make mailing list [email protected] https://lists.gnu.org/mailman/listinfo/help-make
