gpt4 book ai didi

makefile - 定义自定义 GNU make 函数

转载 作者:行者123 更新时间:2023-12-02 17:54:54 25 4
gpt4 key购买 nike

下面示例代码中的 dep2 函数有什么问题?

dep1 = $(eval makefile_list_$1 := $(MAKEFILE_LIST))$(eval -include $1.mk)$(eval MAKEFILE_LIST := $(makefile_list_$1))

define dep2
$(eval makefile_list_$1 := $(MAKEFILE_LIST))
$(eval -include $1.mk)
$(eval MAKEFILE_LIST := $(makefile_list_$1))
endef

$(call dep1,test)
$(call dep2,test)

.DEFAULT_TARGET: all
.PHONY: all
all:
@echo $@

GNU make 3.81 和 3.82 生成 Makefile:10: *** 缺少分隔符。 Stop. 指向 dep2 调用,dep1 运行没有错误。这两个变体之间的唯一区别是 dep2 中的换行符(以及我想使用 Define 的全部原因)。

最佳答案

您忘记了 = :
定义 dep2 =

编辑:
在每行末尾放置一个分号。我已经对此进行了测试并且它可以工作(在 GNUMake 3.81 中)。

define dep2
$(eval makefile_list_$1 := $(MAKEFILE_LIST));
$(eval -include $1.mk);
$(eval MAKEFILE_LIST := $(makefile_list_$1));
endef

为什么这些分号是必要的我不知道,但在文档 define 中似乎仅在定义要在配方中使用的 shell 命令序列时才用于多行“变量”,而不是 Make 命令,因此规则可能有点不同。

关于makefile - 定义自定义 GNU make 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6520914/

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