谁能给我解释一下这个食谱吗? $(Q)makeDependent$(CFLAGS)-o.o-f-$nul:| sed-es$($(@:.o=.d)
它是contiki makefile中以下规则的一部分谁能给我解释一下这个食谱吗? $(Q)makeDependent$(CFLAGS)-o.o-f-$nul:| sed-es$($(@:.o=.d),sed,makefile,Sed,Makefile,它是contiki makefile中以下规则的一部分 $(Q)makedepend $(CFLAGS) -o.o -f- $< 2> nul: | sed -e s!$(<:.cpp=.o)!$@! -e s!\\!/!g > $(@:.o=.d) CUSTOM_RULE_CPP_TO_OBJECTDIR_O=1 $(OBJECTDIR)/%.o:%.cpp |$(OBJECTDIR) $(跟踪抄送) $(Q)cl-nologo$(VCFLAGS)-c$
$(Q)makedepend $(CFLAGS) -o.o -f- $< 2> nul: | sed -e s!$(<:.cpp=.o)!$@! -e s!\\!/!g > $(@:.o=.d)
CUSTOM_RULE_CPP_TO_OBJECTDIR_O=1
$(OBJECTDIR)/%.o:%.cpp |$(OBJECTDIR)
$(跟踪抄送)
$(Q)cl-nologo$(VCFLAGS)-c$<-Fo$@
$(Q)makeDependent$(CFLAGS)-o.o-f-$<2>num:| sed-es!$($(@:.o=.d)
如果你想在投票前了解更多信息,请告诉我。谢谢。我不确定你到底想解释什么。这是一个命令行,它调用
makedepend
程序,将其stderr重定向到nul:
(看起来这应该在DOS系统上运行?但使用像sed这样的UNIX工具?)并将其输出发送到sed
。sed
程序正在将makeDependent输出中的.o
文件名转换为实际目标名称(包括路径),并将反斜杠转换为正斜杠
然后将结果写入一个.d
文件。您可能会在makefile的某个地方找到一行,该行使用include
来包含所有.d
文件
基本上,这是一种自动生成头文件依赖项的方法,这样make就可以在对象文件发生更改时重建它们,而无需手动将它们全部写入makefile
埃塔
- $(Q)
make变量引用,可能扩展为
或不扩展,以控制makefile的详细程度@
- makedependen$(CFLAGS)-o.o-f-$我理解这一点,谢谢你,但是你能不能打断这个陈述,解释一下哪个部分在做什么?
CUSTOM_RULE_CPP_TO_OBJECTDIR_O = 1 $(OBJECTDIR)/%.o: %.cpp | $(OBJECTDIR) $(TRACE_CC) $(Q)cl -nologo $(VCFLAGS) -c $< -Fo$@ $(Q)makedepend $(CFLAGS) -o.o -f- $< 2> nul: | sed -e s!$(<:.cpp=.o)!$@! -e s!\\!/!g > $(@:.o=.d)