首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何只打印变量名本身作为配方的一部分?

如何只打印变量名本身作为配方的一部分?
EN

Stack Overflow用户
提问于 2019-01-12 11:12:43
回答 1查看 39关注 0票数 1

示例:

代码语言:javascript
运行
复制
var1 = x

dep : $(var1)
     echo ($^ -> $@)

这将显示x -> dep,但我真正想显示的是var1 -> dep。

我基本上想把这个回声散布在所有规则上,这样我就可以理解依赖图了。其他的都不管用。

EN

回答 1

Stack Overflow用户

发布于 2019-01-13 00:17:12

首先,要在我的环境中工作,您的makefile需要做两处小修改:将echo中的括号替换为引号,并为x添加一条规则,如下所示:

代码语言:javascript
运行
复制
var1 = x

dep: $(var1)
    echo "$^ -> $@"

x:

似乎没有任何方法可以恢复配方中变量名的未展开形式。我建议的解决方案/变通方法有两个:将变量名缓存在另一个变量中,并根据MadScientist的评论使用$(warning ...)。例如,makefile:

代码语言:javascript
运行
复制
var1 = x

dep: var1_=var1
dep: $(var1)
    @echo "$^ -> $@"
    @echo "$(var1_) -> $@"
    $(warning "Info: Using $^ to build $@")
    $(warning "Info: Using $(var1) to build $@")
    $(warning "Info: Using $(var1_) to build $@")
    $(warning "Info: Using $($(var1_)) to build $@")

x:

将给予:

代码语言:javascript
运行
复制
Makefile:7: "Info: Using x to build dep"
Makefile:8: "Info: Using x to build dep"
Makefile:9: "Info: Using var1 to build dep"
Makefile:10: "Info: Using x to build dep"
x -> dep
var1 -> dep

var1_变量需要在单独的行上定义(参见https://stackoverflow.com/a/20714468/318716),这似乎没有很好的文档记录。输出的顺序很有趣。

Edit:这个想法的一个更简单的变体是替换:

代码语言:javascript
运行
复制
var1 = x

dep: var1_=var1

只需:

代码语言:javascript
运行
复制
var1 = x
var1_ = var1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54156480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档