On Tue, Dec 20, 2011 at 6:05 AM, Ilya Loginov <[email protected]> wrote:
> I've created simple Makefile:
>
> .PHONY: Makefile
> %:
>        @echo "executing target $*"
>
> I suppose that implicit rule will be called for target Makefile. But I have 
> following:
>
> $ make Makefile
> make: Nothing to be done for `Makefile'.
>
> After that I've created explicit rule for Makefile:
>
> Makefile:
>        @echo "executing target Makefile"
>
> Now I have following:
>
> $ make Makefile
> executing target Makefile
> make: Nothing to be done for `Makefile'.
>
> So, I have 2 questions:
> 1) Does implicit rules called for phony targets?

No.  As it says in the info pages:
----
   Since it knows that phony targets do not name actual files that
could be remade from other files, `make' skips the implicit rule search
for phony targets (*note Implicit Rules::).
----

> 2) Why in second case I get message "Nothing to be done for `Makefile'"?

Your Makefile, if taken literally, would result in an infinite loop,
as make would have to build the Makefile, then reinvoke itself, then
rebuild the Makefile, then reinvoke itself, etc.  So, since your
Makefile is broken, *anything* make does is correct.  No?


Philip Guenther

_______________________________________________
Help-make mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-make

Reply via email to