我正在使用gnu make。
我有这样的规则:
SOURCES=*.in
output:$(SOURCES)
$(PROCESSOR) -i $(SOURCES)
这很有效。现在我需要从SOURCES中排除一个文件test.in,我应该如何更新上面的规则?
[更新] 实际上问题有点变化,我需要读取一个环境变量,基于它的值,我要么将所有带有“.in”的文件作为后缀或排除test.in。
你能告诉我怎么做吗?
答案 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
如果单行内容过于神秘。