Windows 根据规则进行过滤

Windows 根据规则进行过滤,windows,linux,makefile,Windows,Linux,Makefile,我有一个规则,比如 app.o:app.cb.cca.cch.h文件列表 我正在使用规则$^对所有依赖项执行一些操作。 但我想根据依赖项上的文件扩展名进行筛选。 我该怎么做 我想要一个变量 k=(仅包含依赖项列表中的.c文件)如果您使用的是GNU Make,则 将执行此操作(filter从列表中返回与给定模式匹配的所有单词,filter out返回不匹配的单词)。如果你使用的是更原始的品牌,你必须求助于 APP_O_C_DEPS = app.c b.c a.c APP_O_NONC_DEPS =

我有一个规则,比如

app.o:app.cb.cca.cch.h文件列表

我正在使用规则
$^
对所有依赖项执行一些操作。 但我想根据依赖项上的文件扩展名进行筛选。 我该怎么做

我想要一个变量

k=(仅包含依赖项列表中的.c文件)

如果您使用的是GNU Make,则

将执行此操作(filter从列表中返回与给定模式匹配的所有单词,filter out返回不匹配的单词)。如果你使用的是更原始的品牌,你必须求助于

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依赖项

c_deps = $(filter %.c,$^)
app.o: app.c b.c a.c h.h file.list
    something $(c_deps)