使用 GNU Make 3.81
我得到的错误是:
制作:没有规则来制作“unittest/build/xlineunittestrunner”所需的目标“unittest/build/inMessages.o”。停止。
我将目标写在makefile中,如下所示:
$(BUILDDIR)/%.o: %.c
$(CC) $(INCLUDES) $(DEFINES) -c $< -o $@
如果我将%
(in $(BUILDDIR)/%.o: %.c
)替换为inMessages
,它可以工作。我不确定为什么%
不匹配inMessages
。
编辑:
我认为问题不在于有其他规则匹配 .o 文件。以下是 makefile 中的完整规则列表:
all: printinfo checkdirs $(BUILDDIR)/xlineunittestrunner
printinfo:
@echo "SRCS = $(SRCS)"
@echo "OBJ = $(OBJ)"
@echo "SOURCEDIRS = $(SOURCEDIRS)"
@echo "OBJECTS = $(OBJECTS)"
@echo "OBJECTSTOBUILD = $(OBJECTSTOBUILD)"
@echo "BUILDDIR = $(BUILDDIR)"
$(BUILDDIR)/xlineunittestrunner: $(OBJECTSTOBUILD)
$(CC) -o $@ -c $^
$(BUILDDIR)/%.o: %.c
$(CC) $(INCLUDES) $(DEFINES) -c $< -o $@
checkdirs: $(BUILDDIR)
$(BUILDDIR):
@mkdir -p $@