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!