在makefile中设置标志的条件

时间:2013-04-24 15:04:17

标签: makefile

我有Makefile,其中为IPv6编译设置了标志。

IPV6 = 1

ifeq ($(IPV6), 1)

然后ipv6目标包括编译。

要求:     我想根据功能启用此标志,此功能是CFLAG的一部分。

ifdef IPV6_FEATURE
  IPV6=1
else
  IPV6=0
endif

但是由于IPV6_FEATURE在Makefile中不可用,因为它是全局包含的,所以它总是会转到其他地方。

如果有任何替代方法,请告诉我。

1 个答案:

答案 0 :(得分:1)

如果我理解了您的问题,那么在定义IPV6_FEATURE的情况下,它会包含在您测试它的部分之后。这不起作用,因为make在读取makefile时会计算条件。

解决方案是不使用ifdef设置IPV6,而是使用条件函数。

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

如果将IPV6=1定义为某个非空值,则会设置IPV6_FEATURE

您可能还需要更改$(IPV6)的使用方式,这样就不会有ifeq条件。