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

makefile - 如何定义除此之外的每个文件的变量,第1张

我正在使用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如果单行内容过于神秘。

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复