尝试自动生成依赖项时"make: *** No targets. Stop."

"make: *** No targets. Stop." when trying to auto-generate dependencies

本文关键字:No targets Stop make 依赖 自动生成      更新时间:2023-10-16

嗨,我正在尝试获取可以自动生成simple_test依赖项的makefile。在我的目录中,我有simple_test,simple_test.cpp,p2.h和simple_test.out.correct。

这是我的生成文件包含的内容:

DEPDIR = .d
$(shell mkdir -p $(DEPDIR) >/dev/null)
DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Td
COMPILE.c = $(CC) $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
COMPILE.cc = $(CXX) $(DEPFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
POSTCOMPILE = mv -f $(DEPDIR)/$*.Td $(DEPDIR)/$*.d
%.o : %.c
%.o : %.c $(DEPDIR)/%.d
    $(COMPILE.c) $(OUTPUT_OPTION) $<
    $(POSTCOMPILE)
%.o : %.cc
%.o : %.cc $(DEPDIR)/%.d
    $(COMPILE.cc) $(OUTPUT_OPTION) $<
    $(POSTCOMPILE)
%.o : %.cxx
%.o : %.cxx $(DEPDIR)/%.d
    $(COMPILE.cc) $(OUTPUT_OPTION) $<
    $(POSTCOMPILE)
$(DEPDIR)/%.d: ;
.PRECIOUS: $(DEPDIR)/%.d
-include $(patsubst %,$(DEPDIR)/%.d,$(basename $(SRCS)))

你所有的规则都是模式规则。模式规则不能是默认规则。如果你用"make"调用这个makefile,它会抱怨没有目标——因为没有目标。