Если я тестирую следующие примеры, то (1) и (2) ведут себя очень похоже, поэтому я не могу различить разницу между ними.
в случае с правилом % ::
, похоже, чтоповедение, отличное от % :
, но я не могу понять это наверняка.
% : ------ (1)
@echo % : $@
----------------------
.DEFAULT : ------ (2)
@echo default : $@
----------------------
% :: ------ (3)
@echo % :: $@
В следующем примере %.foo : %.bar
не является терминалом и также имеет правило, которое соответствует предварительному условию%.bar
поэтому я думаю, что команда make a.foo
в приглашении должна соответствовать правилу %.foo : %.bar
, но в конечном итоге она соответствует правилу % ::
даже более длинного ствола
%.foo : %.bar
@echo target : $@
%.bar :
@echo target : $@
% ::
@echo % :: $@
------------------------
sh$ make a.foo
% :: a.foo