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
에만 의존 하지만 해당 세 대상이 빌드되었는지 확인하는 것 외에는 아무것도 수행하지 않습니다.tar
rmt
tar.info
.PHONY
확장 프로그램입니다이는 잘못된 대상 all
과 install
여기가 실제 파일과 일치하지 않음을 의미합니다. 규칙이 false로 표시되지 않은 경우 all
또는이라는 파일을 생성하면 install
해당 규칙이 실행되지 않을 수 있습니다.