为具有给定扩展名的所有文件添加其他依赖项

时间:2019-03-03 18:10:20

标签: makefile gnu-make

假设我正在使用隐式规则从.o文件构建.c文件。

如果我想为一个特定的.o文件添加特定的其他依赖项,就像添加没有配方的规则一样简单:

file.o : header.h

这使得file.oheader.h之外还依赖file.c

如果我要对所有 .o个文件执行该操作怎么办?以下内容无效:

%.o : header.h

1 个答案:

答案 0 :(得分:2)

为此,header.h必须有一个(必须)每个.c文件包含的标头 因此,这是每个.o文件的先决条件。如果那是你的情况 需要编写自己的模式规则,例如:

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

但是管理头文件依赖项的常用方法是Auto-Dependency Generation

稍后

  

我的目标是避免为$(CC)编译复制现有的隐式规则(配方部分)。有可能吗?

您必须定义一个新的模式规则,将 header.h添加到%.c先决条件中, 并具有适当的配方。实际上我应该 还建议您cancel内置模式规则:

%.o: %.c

%.o: %.c header.h
    $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
相关问题