Makefile 向现有make目标添加依赖项 条件0:

Makefile 向现有make目标添加依赖项 条件0:,makefile,Makefile,比如说,我有几个源代码,a.c,b.c,…,z.c,我想要一个规则来编译它们。以下是一个解决方案: %.o: %.c $(CC) -c -o $@ $(CFLAGS) $< 我的问题: 根据条件1的解决方案,在make中是否有类似于add_dependency的内容来简化解决方案并获得类似以下内容 %.o: %.c $(CC) -c -o $@ $(CFLAGS) $< add_dependency(c.o, c.h e.h) add_dependency(e.o

比如说,我有几个源代码,
a.c,b.c,…,z.c
,我想要一个规则来编译它们。以下是一个解决方案:

%.o: %.c
    $(CC) -c -o $@ $(CFLAGS) $<
我的问题: 根据条件1的解决方案,在
make
中是否有类似于
add_dependency
的内容来简化解决方案并获得类似以下内容

%.o: %.c
    $(CC) -c -o $@ $(CFLAGS) $<

add_dependency(c.o, c.h e.h)
add_dependency(e.o, e.h)
%.o:%.c
$(CC)-c-o$@$(CFLAGS)$<
添加依赖项(c.o、c.h和e.h)
添加依赖项(e.o、e.h)
或者,您认为哪种解决方案更好

编辑:

感谢您的善意通知@ctheo:)

是的,我确实看过
自动工具
,了解到它可以满足我的所有需求。然而,我正在处理的是一个现有的项目,它的
Makefile
包含了处理
C++
中代码的其他指令,我认为现在我最好只修改几行,而不是将整个
Makefile
移植到
autotools
,除非我在没有引入
自动工具的情况下无法找到令人满意的解决方案

一开始,我并不期望有一个解决方案。在我看来,它似乎被
自动工具
所覆盖。然而,在一些搜索之后,我找到了GNU/make手册

它指出:

一个文件可以是多个规则的目标。所有规则中提到的所有先决条件都被合并到目标的一个先决条件列表中

因此,您的查询有一个解决方案

c.o: c.h e.h
e.o: e.h

%.o: %.c
        $(CC) -c -o $@ $(CFLAGS) $<
c.o:c.h.e.h
e、 o:e.h
%.o:%.c
$(CC)-c-o$@$(CFLAGS)$<

谢谢你的坚持。今天我学到了一些东西:)

此外,您示例中的
.o
文件都依赖于具有相同词干的
.h
文件,因此您也可以概括这部分规则:

c.o: e.h

%.o: %.c %.h
        $(CC) -c -o $@ $(CFLAGS) $<
c.o:e.h
%.o:%.c%.h
$(CC)-c-o$@$(CFLAGS)$<

这样,触发编译的规则会完全覆盖您的“正常”情况,而您的“异常”情况会突出,因为这是唯一的附加规则。

autotools会完全满足您的要求。@ctheo感谢您的善意通知,我已将问题正文更新为对您评论的答复。:)
c.o: e.h

%.o: %.c %.h
        $(CC) -c -o $@ $(CFLAGS) $<