You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Makefile函数内变量展开异常:Canned Recipes变量未正常解析

Makefile Canned Recipes变量展开失效的解决方法

问题出在canned recipe里的嵌套变量引用未正确转义$符号,导致Make在call阶段就提前尝试展开未完成定义的变量,最终输出空值。

修正后的代码

define project
$(1)_dir := $(realpath $(2))

.PHONY: $(1)
$(1):
    $(info $(1)_dir = "$$($(1)_dir)")
endef

$(eval $(call project,hello_world,./hello-world))

关键说明

原代码中$($(1)_dir)的写法会让Make在call替换参数时,直接尝试展开$($(1)_dir)——此时$(1)_dir对应的变量还未完成定义,所以得到空值。

将$($(1)_dir)改为$$($(1)_dir)后,call展开时$$会被替换为单个$,最终规则里的命令变为$(info hello_world_dir = "$(hello_world_dir)")。当执行make hello_world时,Make会正确引用之前定义的hello_world_dir变量,输出预期的路径。

内容的提问来源于stack exchange,提问作者JeremyEastham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 09:12:38