我希望rule
变量在归因行中包含$@
的值,而不是参考。例如:
rule=$@
all:
@echo "Running Rule: $(rule)"
rule1: all
@echo "Do something here"
rule2: all
@echo "Do another thing here"
我的预期结果是:
运行运行规则:rule2
在这做另一件事
make rule2
时。但我得到的结果是:
运行规则:全部
在这做另一件事
是否可以进行此归因?
[编辑]
换句话说,我需要的是获取父目标名称,即用户在终端控制台中键入的make
命令的参数。
答案 0 :(得分:1)
没有。 $@
始终设置为当前目标,永远不会设置为父目标(为什么会这样做?)
您可以选择的最佳选择(鉴于我们对您真正想做的事情的描述有限)是使用target-specific variables:
all:
@echo "Running Rule: $(rule)"
rule1: rule = rule1
rule1: all
@echo "Do something here"
rule2: rule = rule2
rule2: all
@echo "Do another thing here"