gpt4 book ai didi

linux - 为什么在用于 omap 设备的 TI x-loader makefile 中使用 $$PWD 而不是 $PWD

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:00:11 26 4
gpt4 key购买 nike

我开始分析 TI X-Loader,包括它的 makefile。我在顶部的 makefile 中找到了以下几行:

TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)

ifeq (include/config.mk,$(wildcard include/config.mk))
...

关于第一行:我知道“$PWD”表示PWD(工作目录)的值
我的问题:
为什么在这种特殊情况下使用双美元符号?

关于第二行:我试图了解比较的内容和原因。我已经红色了 GNU MAKE 手册通配符解释。我仍然缺少一些东西。

我的问题:
"$(wildcard") 有什么用?
哪些 config.mk 文件相互比较?
为什么要比较它们? (这个问题更多的是关于makefile结构)

提前感谢您的帮助。

马丁

最佳答案

在 make 中,您使用两个美元符号 ($$) 转义一个美元符号(这样它就不会被 make 扩展)。因此,如果您编写 $PWD,那么 make 会将 $P 解释为 make 变量引用,它可能未设置,因此为空,结果(传递给shell) 将是 WD。如果您使用 $$PWD,则美元符号将被转义,传递给 shell 命令的结果将是您想要的 $PWD

对于第二行,如果没有与通配符匹配的文件,wildcard 函数将扩展为空字符串。因此,此 wildcard 调用正在测试文件 include/config.mk 是否存在。如果是,则该函数的结果将为 include/config.mk,并且 ifeq 测试将为真。如果不是,则结果将为空字符串,ifeq 测试将为假。

这里没有比较 include/config.mk 的内容或时间戳或任何其他内容。这纯粹是一个“这个文件存在吗?”测试。

关于linux - 为什么在用于 omap 设备的 TI x-loader makefile 中使用 $$PWD 而不是 $PWD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21086229/

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