我有Makefile,其中为IPv6编译设置了标志。
IPV6 = 1
ifeq ($(IPV6), 1)
然后ipv6目标包括编译。
要求: 我想根据功能启用此标志,此功能是CFLAG的一部分。
ifdef IPV6_FEATURE
IPV6=1
else
IPV6=0
endif
但是由于IPV6_FEATURE在Makefile中不可用,因为它是全局包含的,所以它总是会转到其他地方。
如果有任何替代方法,请告诉我。
答案 0 :(得分:1)
如果我理解了您的问题,那么在定义IPV6_FEATURE
的情况下,它会包含在您测试它的部分之后。这不起作用,因为make在读取makefile时会计算条件。
解决方案是不使用ifdef
设置IPV6
,而是使用条件函数。
IPV6 = $(if $(IPV6_FEATURE), 1, 0)
如果将IPV6=1
定义为某个非空值,则会设置IPV6_FEATURE
。
您可能还需要更改$(IPV6)
的使用方式,这样就不会有ifeq
条件。