Я знаю, что make
обычно выполняет первую цель, если вызывается без каких-либо аргументов.Но что произойдет, если первая цель - это шаблонное правило?Здесь у меня есть Makefile, который выглядит следующим образом:
%.o: %.cc
gcc -c -o $@ $<
main: main.o helper.o
gcc main.o helper.o -o $@
Из моего понимания make
, просто вызывая его без каких-либо аргументов, вероятно, в этом случае может произойти какая-то ошибка, потому что первая цель, насколько я понял всегда цель по умолчанию, не имеет смысла, если make
не дано никаких аргументов.Но когда я вызываю make
с этим Makefile, он вместо этого строит цель main
(и, конечно, также рекурсивно цели main.o
и helper.o
).Итак, действительно ли всегда верно, что make
будет игнорировать правила шаблона при поиске первой цели?И считается ли это каким-то плохим стилем ставить тех, кто стоит перед целью, которые действительно хотят быть по умолчанию?На мой взгляд, это как-то сбивает с толку.