Makefile &引用;否定;生成文件中的变量

Makefile &引用;否定;生成文件中的变量,makefile,Makefile,我试图使用GNUmake中的if函数(与条件语句相反),以便在未定义特定变量的情况下向列表中添加单词。我这样做的结果是,在提供第三个参数的同时,将第二个参数留空,如下所示: FOO := baz $(if $(BAR),,quux) 这看起来还行,但我觉得有点傻。有没有什么简单的、内置的方法来做我想做的事情?我可以定义自己的函数,但 FOO := baz $(if $(call not,$BAR),quux) 在我看来,这并不是一个很大的进步。我会这样做: ifndef BAR FOO +

我试图使用GNU
make
中的
if
函数(与条件语句相反),以便在未定义特定变量的情况下向列表中添加单词。我这样做的结果是,在提供第三个参数的同时,将第二个参数留空,如下所示:

FOO := baz $(if $(BAR),,quux)
这看起来还行,但我觉得有点傻。有没有什么简单的、内置的方法来做我想做的事情?我可以定义自己的
函数,但

FOO := baz $(if $(call not,$BAR),quux) 
在我看来,这并不是一个很大的进步。

我会这样做:

ifndef BAR
FOO +=quux
endif
或者,如果空字符串具有“未定义”的含义,则:

根据报告:

第一个参数、条件、第一个 具有所有前面和后面的 删除空白,然后进行扩展。 如果它扩展到任何非空字符串, 那么这个条件就被认为是 对。如果它扩展为空 字符串,则该条件被视为 这是假的

所以问题是如何让一个已定义的变量给出一个空字符串,而一个未定义的变量给出一个非空字符串

例如,您可以使用与(
$(如果$(过滤器未定义,$(源代码栏)),quux)组合的(
),但这比您提供的两个示例更难看^_^

ifeq ($(BAR),)
FOO +=quux
endif