我阅读了GNU make文档的Using Variables部分,但是在多次定义make变量时,无法理解make变量是如何扩展的。
例如,请参阅以下简短的makefile:
public void loadIdTypes() {
mAPIService.loadIdTypes().enqueue(new Callback<IdType>(){
@Override
public void onResponse(Response<IdType> response, Retrofit retrofit) {
String name = response.body().getData().toString();
Log.i("cityName", name);
}
@Override
public void onFailure(Throwable t) {
}
});
}
在运行.PHONY: run
run: a b
TARGET := a
$(TARGET):
echo $(TARGET)
touch $@
TARGET := b
$(TARGET):
echo $(TARGET)
touch $@
时产生以下输出:
make
似乎echo b
b
touch a
echo b
b
touch b
有一个目标,自动变量a
确实是$@
。但是回显a
变量,这也是目标名称,打印TARGET
......这里发生了什么?
我很感激任何帮助,最好是链接到文档,澄清这种行为。
其他可能相关的问题:
b
时,makefile只读一次吗?注意:使用递归扩展变量(即将make
更改为:=
)并不会更改上例中的输出。