命令行

时间:2018-06-07 23:15:33

标签: variables makefile

Makefiles的新手问题......为什么这不起作用?

TARGET=$@

$(TARGET): * **/*
    @echo "TARGET=$(TARGET)"

这是什么意思?

TARGET=my_target

$(TARGET): * **/*
    @echo "TARGET=$(TARGET)"

make my_target开始?

前者的结果是,“没有规则来制作目标`my_target'。”

除了“为什么这不起作用”之外,还有一个解决方法吗?我希望能够从命令行指定任意目标。我想我可以对env var做出反应,但这会使CLI变得笨重,例如make target=my_target build或类似。

我已经搜索过了,但是我没有得到正确的点击来解决这个问题。 GNU make 3.81。谢谢!

1 个答案:

答案 0 :(得分:1)

自动变量$@在模式规则的上下文中定义;在任何规则之外它没有价值。

如果你想让Make对你命名的目标做同样的事情,你可以使用匹配任何规则:

%:
    @echo TARGET=$@