gpt4 book ai didi

makefile - 如何在GNU Make中的定义内使用ifeq?

转载 作者:行者123 更新时间:2023-12-04 13:52:24 26 4
gpt4 key购买 nike

我正在尝试在Makefile中的定义内执行ifeq,但似乎遇到了一些错误,我想知道是否丢失了某些东西。我有以下Makefile:

$(info ---- start ----)
ifeq ("X","Y")
$(info DOES not appear_1)
endif

define TESTDEF
ifeq ("X","Y")
$(info SHOULD not appear)
# $(error DEFINITELY SHOULD not error...)
endif
endef

$(eval $(call TESTDEF, 1,2,3))

我收到以下错误:
---- start ----
SHOULD not appear
Makefile:14: *** DEFINITELY SHOULD not error.... Stop.

我缺少一些技巧吗?是否可以在ifeq的内部定义? (注意:这既发生在我的 native GNU 3.81 make上,也发生在我的mips uclibc交叉编译器上)

最佳答案

当您对这个函数进行call编码时,Make会使用您提供的任何参数(在这种情况下无关紧要)来评估定义。因此,如果定义中包括$(info ...)$(error ...)之类的内容,即使在注释中,Make也会对其进行评估,然后您将看到结果(请参阅documentation;我已经在GNUMake 3.81中对其进行了测试)。

要获得所需的行为,请添加几个美元符号:

define TESTDEF
ifeq ("X","Y")
$$(info SHALL not appear)
# $$(info DEFINITELY SHALL not error...)
endif
endef

$(eval $(call TESTDEF))

关于makefile - 如何在GNU Make中的定义内使用ifeq?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13421848/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com