如何在未设置环境时从通配符匹配中过滤掉文件

时间:2015-10-10 03:28:19

标签: makefile gnu-make

我正在使用gnu make。

我有这样的版本:

MYLIST := $(filter-out $(if $(filter 1,$(exclude_file1)), file1.c),$(wildcard *.c))

效果很好:当我过滤掉“file1.c”时,我设置了环境变量exclude_file1。

现在我想要相反:当没有设置环境变量时,我想要排除file1.c。

你能指出我应该做些什么改变吗?

1 个答案:

答案 0 :(得分:0)

MYLIST := $(filter-out $(if $(filter undefined,$(origin exclude_file1)),,file1.c),$(wildcard *.c))

MYLIST := $(filter-out $(if $(filter-out undefined,$(origin exclude_file1)),file1.c),$(wildcard *.c))

MYLIST := $(filter-out $(if ${exclude_file1},,file1.c),$(wildcard *.c))

前两个公式的一个优点是,当非常有用的--warn-undefined-variables生效时,它们不会生成消息。