1

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

IPV6 = 1

ifeq ($(IPV6), 1)

然后 ipv6 目标包含在编译中。

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

ifdef IPV6_FEATURE
  IPV6=1
else
  IPV6=0
endif

但是由于 IPV6_FEATURE 在 Makefile 中不可用,因为它是一个全局包含,它总是会去其他地方。

请让我知道是否有任何替代方案。

4

1 回答 1

1

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

解决方案是不使用ifdefto set IPV6,而是使用条件函数。

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

这将设置IPV6=1ifIPV6_FEATURE定义为某个非空值。

您可能还需要更改您的使用方式$(IPV6),以便您没有ifeq条件。

于 2013-04-24T19:04:58.267 回答