2011-10-14 41 views
0

過濾我有一個像就規則

app.o: app.c b.c a.c h.h file.list

我使用規則$^上做的所有依賴一些動作生成規則。 但我想根據依賴文件擴展名進行篩選。 我該怎麼做?

我希望變量

k = (which contain only .c file from dependency list)

回答

2

如果您正在使用GNU讓,比

$(filter %.c,$^) 

會做的伎倆(過濾器返回從列表中匹配給定模式的所有單詞,過濾返回不匹配的)。如果您使用的是一些更原始的化妝,你將不得不訴諸

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) 
     ... 

注:變量使工作方式可以讓你說

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

,它會擴展到.c當前目標的依賴關係。