如何定义除此之外的每个文件的变量

时间:2015-06-11 19:39:42

标签: makefile

我正在使用gnu make。

我有这样的规则:

SOURCES=*.in

output:$(SOURCES)
    $(PROCESSOR) -i $(SOURCES) 

这很有效。现在我需要从SOURCES中排除一个文件test.in,我应该如何更新上面的规则?

[更新] 实际上问题有点变化,我需要读取一个环境变量,基于它的值,我要么将所有带有“.in”的文件作为后缀或排除test.in。

你能告诉我怎么做吗?

1 个答案:

答案 0 :(得分:0)

使用部分built-in functions

SOURCES := $(filter-out $(if $(filter val,$(env_var)),test.in),$(wildcard *.in))

如果您只希望将其应用于该单一规则:

output: $(filter-out $(if $(filter val,$(env_var)),test.in),$(SOURCES))

其中env_var是要检查的环境值,val是值。如果您想要部分匹配,请将filter替换为findstr。您可以将定义拆分为多个语句和/或ifeq如果单行内容过于神秘。