2015-08-14 28 views
0

我們有一個內核模塊,它有自己的makefile,它可以正常工作。

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

有時候,我們通過增加-Wa,-ahlmsCFLAGS需要make輸出.lst。在我們的makefile中,我們添加了EXTRA_CFLAGS += -Wa,-ahlms=$<.lst

但是,這不起作用,因爲$<此時爲空,並且$$<也不起作用。有人知道我們如何解決這個問題嗎?簡單:

FOO := $< 

在右側立即評估,因此這臺FOO爲空字符串

回答

0

變量兩種方式(我們的目的)在化妝定義。並且遞歸:

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 
相關問題