【发布时间】:2017-12-04 12:24:02
【问题描述】:
我正在尝试在 makefile 中创建一些子目录。我知道如何使用每个子目录的规则来做到这一点。我正在寻找对所有子目录使用一条规则的语法(使用循环或使用 SUBDIR 列表)。
例如:
$(dst_dir)/%.o : $(M2M_GENERIC_DIR)/rm/src/%.c
$(TRACE_CC)
$(Q)$(GCC) -c $(CFLAGS) $< -o $@
$(Q)$(GCC) -c $(CFLAGS) -MM -MT $@ -MF $(subst .o,.d,$@) $< -o $(subst .o,.d,$@)
$(dst_dir)/%.o : $(M2M_GENERIC_DIR)/utility/src/%.c
$(TRACE_CC)
$(Q)$(GCC) -c $(CFLAGS) $< -o $@
$(Q)$(GCC) -c $(CFLAGS) -MM -MT $@ -MF $(subst .o,.d,$@) $< -o $(subst .o,.d,$@)
$(dst_dir)/%.o : $(M2M_GENERIC_DIR)/fota/src/%.c
$(TRACE_CC)
$(Q)$(GCC) -c $(CFLAGS) $< -o $@
$(Q)$(GCC) -c $(CFLAGS) -MM -MT $@ -MF $(subst .o,.d,$@) $< -o $(subst .o,.d,$@)
$(dst_dir)/%.o : $(M2M_GENERIC_DIR)/fota/src/lzo/%.c
$(TRACE_CC)
$(Q)$(GCC) -c $(CFLAGS) $< -o $@
$(Q)$(GCC) -c $(CFLAGS) -MM -MT $@ -MF $(subst .o,.d,$@) $< -o $(subst .o,.d,$@)
【问题讨论】:
-
大量重复使您更难看到您要完成的工作,并且它本身就是一种反模式。 en.wikipedia.org/wiki/Don%27t_repeat_yourself
-
您只是在寻找
mkdir -p "$(dst_dir)"吗?