【问题标题】:Trouble adding extra CFLAGS with $< in makefile在 makefile 中使用 $< 添加额外的 CFLAGS 时遇到问题
【发布时间】:2015-11-07 20:21:24
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: makefile kernel


    【解决方案1】:

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

    FOO := $<
    

    右侧立即计算,因此将FOO 设置为空字符串。和递归:

    FOO = $<
    

    在使用变量之前不计算右侧;这会将FOO 设置为$&lt; 的值,然后当$(FOO) 扩展时,此时$&lt; 的值将被扩展。

    显然,如果您想在变量值中包含自动变量,则后者是您想要的。当您使用 += 运算符时,变量的类型(简单与递归)是从变量的先前设置推断出来的(如果没有先前的设置,则默认为递归)。您没有显示EXTRA_CFLAGS 的设置方式,但如果您遇到此问题,那么一定有人将其设置为简单:

    EXTRA_CFLAGS :=
    

    如果您无法将其更改为使用递归设置,那么您可以做的唯一方法是在分配时显式使用= 而不是+=

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

    如果您真的想添加到现有值,您可以做的就是制作额外的变量,如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-27
      • 2018-01-22
      相关资源
      最近更新 更多