我有像
这样的制作规则 app.o: app.c b.c a.c h.h file.list
我正在使用规则$^
对所有依赖项执行某些操作。
但我想根据依赖项上的文件扩展名进行过滤。
我怎么能这样做?
我想要一个变量
k = (which contain only .c file from dependency list )
答案 0 :(得分:2)
如果您使用 GNU Make ,而不是
$(filter %.c,$^)
将执行该技巧(过滤器返回与列表中的给定模式匹配的所有单词,过滤器返回不匹配的单词)。如果你正在使用一些更原始的make,你将不得不求助于
APP_O_C_DEPS = app.c b.c a.c
APP_O_NONC_DEPS = h.h file.list
app.o: $(APP_O_C_DEPS) $(APP_O_NONC_DEPS)
...
注意:变量在Make中的工作方式允许你说
c_deps = $(filter %.c,$^)
app.o: app.c b.c a.c h.h file.list
something $(c_deps)
它将扩展到当前目标的.c依赖项。