我的理解对makefile的第一条规则是否正确?

问题描述 投票:0回答:2

我正在学习make,并尝试从Prerequisite-Types了解以下makefile:>

OBJDIR := objdir
OBJS := $(addprefix $(OBJDIR)/,foo.o bar.o baz.o)

$(OBJDIR)/%.o : %.c
        $(COMPILE.c) $(OUTPUT_OPTION) $<

all: $(OBJS)

$(OBJS): | $(OBJDIR)

$(OBJDIR):
        mkdir $(OBJDIR)

第一条规则使我感到困惑。它首先被应用。由于$(OBJDIR)不存在,因此最后一个规则将应用于mkdir objdir。然后,由于新创建的目录中没有任何内容,因此没有stem

。o,也没有任何stem。c,因此前提条件和配方似乎毫无意义。

第一条规则唯一要做的就是建立目录,这似乎是不真实的。

我正在学习make,并尝试从Prerequisite-Types OBJDIR中了解以下makefile:= objdir OBJS:= $(addprefix $(OBJDIR)/,foo.o bar.o baz.o)$(OBJDIR)/ %.o:%。c $(COMPILE.c)$(...

makefile
2个回答
0
投票

我不太听你的话。


0
投票
  1. 第一个规则是pattern rule,因此它不能成为默认规则;除非您指定(例如) make thing.o

© www.soinside.com 2019 - 2024. All rights reserved.