假设我正在使用隐式规则从.o
文件构建.c
文件。
如果我想为一个特定的.o
文件添加特定的其他依赖项,就像添加没有配方的规则一样简单:
file.o : header.h
这使得file.o
除header.h
之外还依赖file.c
。
如果我要对所有 .o
个文件执行该操作怎么办?以下内容无效:
%.o : header.h
答案 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 $@