2013-04-24 76 views
1

我在Makefile中爲IPv6編譯設置了標誌。在makefile中設置標誌的條件

IPV6 = 1 

ifeq ($(IPV6), 1) 

然後ipv6的目標是包括彙編。

要求: 我想根據功能啓用此標誌,並且此功能是CFLAG的一部分。

ifdef IPV6_FEATURE 
    IPV6=1 
else 
    IPV6=0 
endif 

但由於IPV6_FEATURE不Makefile中獲得,因爲它是一個全球性的包括,它總是會去別的。

請讓我知道,如果有任何替代品。

回答

1

如果我理解你的問題,在IPV6_FEATURE被定義的情況下,它會被包含在你測試它的部分之後。這不起作用,因爲make在讀取makefile時評估條件。

解決方案是不使用ifdef來設置IPV6,而是使用條件函數。

IPV6 = $(if $(IPV6_FEATURE), 1, 0) 

這將設置IPV6=1如果IPV6_FEATURE被定義爲一些非空值。

您可能還需要更改使用$(IPV6)的方式,以便您沒有ifeq條件。