2013-04-24 70 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条件。