gpt4 book ai didi

makefile - Makefile 中的括号 $() 和大括号 ${} 语法之间存在差异。但我不知道为什么

转载 作者:行者123 更新时间:2023-12-04 00:10:19 26 4
gpt4 key购买 nike

我的 makefile 的第一个版本

func:
$(call exec-on-changed-file, "$$(DIR)")

define exec-on-changed-file
DIR=GOOD;echo $(1)
endef

我执行了它,但它不起作用

$ make func
DIR=GOOD;echo "$(DIR)"
/bin/sh: 1: DIR: not found

我对这个 makefile 进行了更改(括号与方括号)

func:
$(call exec-on-changed-file, "$${DIR}")

define exec-on-changed-file
DIR=GOOD;echo $(1)
endef

我执行它并且它有效。

$ make func
DIR=GOOD;echo "${DIR}"
GOOD

你能给我解释一下为什么吗?

最佳答案

正如您的输出所示,当您使用 $$(DIR) 时,shell 看到 $(DIR),这是运行 命令 DIR 的有效 shell 语法,它不存在。

当您使用 $${DIR} 时,shell 会看到 ${DIR},这是 变量 的有效 shell 语法DIR.

call 中的 $$ 扩展为 $

关于makefile - Makefile 中的括号 $() 和大括号 ${} 语法之间存在差异。但我不知道为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36858375/

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