makefile 규칙에 전제조건은 있지만 레시피가 없다는 것은 무엇을 의미합니까?

makefile 규칙에 전제조건은 있지만 레시피가 없다는 것은 무엇을 의미합니까?
INSTALL = /usr/local/bin/install -c
INSTALLDATA = /usr/local/bin/install -c -m 644
# The directory to install tar in.
bindir = $(prefix)/bin
# The directory to install the info files in.
infodir = $(prefix)/info




.PHONY: all
all:    tar rmt tar.info

tar:    $(OBJS)
        $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)

rmt:    rmt.c
        $(CC) $(CFLAGS) $(LDFLAGS) -o $@ rmt.c

tar.info: tar.texinfo
        makeinfo tar.texinfo




.PHONY: install
install: all
        $(INSTALL) tar $(bindir)/$(binprefix)tar
        -test ! -f rmt || $(INSTALL) rmt /etc/rmt
        $(INSTALLDATA) $(srcdir)/tar.info* $(infodir)

"all" 대상에 대한 규칙을 이해할 수 없습니다. 레시피가 없습니다. 따라서 "make all"을 입력하면 ".PHONY:all" 행이 없으면 어떤 일이 발생하고 어떻게 됩니까?

답변1

대상은 , 및 대상 all에만 의존 하지만 해당 세 대상이 빌드되었는지 확인하는 것 외에는 아무것도 수행하지 않습니다.tarrmttar.info

.PHONY확장 프로그램입니다이는 잘못된 대상 allinstall여기가 실제 파일과 일치하지 않음을 의미합니다. 규칙이 false로 표시되지 않은 경우 all또는이라는 파일을 생성하면 install해당 규칙이 실행되지 않을 수 있습니다.

관련 정보