Понять основную концепцию Makefile - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть следующий make-файл, который я пытаюсь обновить, но есть определенный элемент, который я не могу понять, что означает:

$(OBJDIR)/%.o: %.f Makefile
       @$(F90) $(FFLAGS) $(POPTIONS) -o $@ $<    
%.o:        %.f Makefile
       @make $(OBJDIR)/$@

Я понимаю, что $(OBJDIR)/%.o: получается путем выполнениякомпилятор f90 с флагами и т. д. Но зачем мне правило %.o и что означает @make.Мне не хватает общего понимания того, как работает Makefile?

1 Ответ

0 голосов
/ 03 декабря 2018

@make означает вызывать make, но не отображать это на выходе (символ @).Правильный путь - @${MAKE}, потому что make может не относиться к исполняемой программе, тогда как ${MAKE} делает.

В правилах make-файлов должен быть создан целевой файл, который они обещают (если tar-файл не помечен как.PHONY).Здесь это правило %.o обещает построить этот %.o, но на самом деле он строит $(OBJDIR)/%.o.Это нарушенное правило.

...