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。谢谢!
答案 0 :(得分:1)
自动变量$@
在模式规则的上下文中定义;在任何规则之外它没有价值。
如果你想让Make对你命名的目标做同样的事情,你可以使用匹配任何规则:
%:
@echo TARGET=$@