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
にのみ依存しますが、その 3 つのターゲットがビルドされたことを確認する以外は何も行いません。tar
rmt
tar.info
.PHONY
拡張プログラムですこれは、間違ったターゲットall
とinstall
ここが実際のファイルと一致しないことを意味します。ルールがfalseとマークされていない場合、またはall
というファイルを生成すると、そのinstall
ルールが実行されない可能性があります。