我试图使每个对象文件foo.o
依赖于其源文件foo.c
。出于某种原因,使用*使每个依赖于每个源文件(这样foo.o
依赖于foo.c, bar.c, etc.
可以工作,但是使用%会出错。
我的目录结构现在只有一个源文件,但是我打算添加更多。我得到的错误是:
$(PATHO)%.o:: $(PATHT)*.c # This compiles properly
recipe
$(PATHO)%.o:: $(PATHT)%.c # This causes error 'No rule to make target'
recipe
编辑:我澄清了我的问题,对于造成任何混淆,我们深表歉意。
答案 0 :(得分:0)
当目标模式中的%
匹配时,先决条件中的%
会扩展到目标中的匹配部分。
例如,假设您有一条规则
%.o: %.c
$(CC) $(CFLAGS) -c $^
当foo.o
与规则目标(%.o
)匹配时,先决条件是foo.c
。
例如在《 GNU Make手册》第Introduction to Pattern Rules节中对此进行了说明,并且在所有make变体中都相同。