On 2023-10-04 07:55, Paul Smith wrote:
> It also means that implicit rules are not searched, for PHONY targets.
Is there a good reason for that? The manual mentions only performance:
The implicit rule search (see Using Implicit Rules) is skipped
for .PHONY targets. This is why declaring a target as .PHONY is
good for performance, even if you are not worried about the
actual file existing.
Say that I want to be able to say "make update-host-foo", such that
Make will run some remote commands on host "foo". For any host name:
update-host-%:
ssh $* some command
Problem is that while this works, Make is probing for the existence
of the file update-host-foo, and if that happens to exist, it will
not run the rule.
But if we add this:
.PHONY: $(filter update-host-%,$(MAKECMDGOALS))
then the rule stops working, and it must be because of what you're
referring to above: if we make the target phony, then the implicit
rules are no longer searched.
In this case, it would be nice if they did!