无法使用$<添加额外的CFLAGS在makefile中

时间:2015-08-14 14:25:42

标签: makefile kernel

我们有一个内核模块,它有自己的makefile,可以正常工作。

all::
    $(MAKE) -C $(KSRC) M=$(PWD) modules

有时我们需要make通过将.lst添加到-Wa,-ahlms来输出CFLAGS。在我们的makefile中,我们添加了EXTRA_CFLAGS += -Wa,-ahlms=$<.lst

但是,这不起作用,因为$<此时为空,$$<也不起作用。有人知道我们如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

变量在make中以两种方式定义(出于我们的目的):simple:

FOO := $<

其中右侧被立即评估,因此将FOO设置为空字符串。递归:

FOO = $<

在使用变量之前不评估右侧;这会将FOO设置为值$<,然后稍后展开$(FOO)时,此时$<的值将会扩展。

显然,如果要将自动变量包含在变量值中,后者就是您想要的。当您使用+=运算符时,变量的类型(简单与递归)是从先前的变量设置推断出来的(如果没有先前的设置,那么递归是默认设置)。你没有说明如何设置EXTRA_CFLAGS,但如果你遇到这个问题,那么有人必须把它设置得很简单:

EXTRA_CFLAGS :=

如果您无法更改它以使用递归设置,那么您可以执行所需操作的唯一方法是在分配时明确使用=而不是+=

EXTRA_CFLAGS = -Wa,-ahlms=$<.lst

如果你真的想要添加现有值,你可以做的就是制作额外的变量,如:

PREVIOUS_EXTRA_CFLAGS := $(EXTRA_CFLAGS)
EXTRA_CFLAGS = $(PREVIOUS_EXTRA_CFLAGS) -Wa,-ahlms=$<.lst