2015-04-01 1 views
1

Имя файла: Makefile.mkMatch ничего шаблонное правило с зависимостью

%: foo 
    @echo %: [email protected] with foo 

foo: 
    @echo foo 

Run

$ make -f Makefile.mk test 

Выход:

foo 
%: Makefile.mk with foo 
%: test with foo 

Я бегу это в GNU Make 3.81 версии. Я не понимаю, почему имя файла также напечатано (%: Makefile.mk с foo). Может кто-нибудь объяснить мне?

ответ

2

Это из-за how makefiles are remade. То есть сказать, что

Иногда Makefiles может быть переделан из других файлов

и

Если Makefile может быть переделан из других файлов, вы, вероятно, хотите сделать, чтобы получить вверх -в современной версии Makefile читать в

так

после прочтения всех make-файлов, make будет рассматривать каждую цель цели и попытаться ее обновить.

Какой из них соответствует вашему правилу match-anything и запускается так, как вы видите.

Если вы добавите явный адрес Makefile.mk: ; в свой файл makefile, он переопределит цель match-anything и предотвратит это.

Смежные вопросы