来自docs:
目标特定变量还有一个特殊功能:何时 您定义了一个特定于目标的变量,变量值也在其中 影响该目标的所有先决条件及其所有先决条件 先决条件等(除非这些先决条件覆盖该变量 用他们自己的特定目标变量值。)
尝试以下makefile:
all::
@: '$@'
all:: dep;
dep:
echo target is: $(target)
all : target = all
.PHONY: all dep
跑步:
$ make -j
我明白了:
echo target is:
target is:
定义target = all
在哪里?
答案 0 :(得分:0)
如果您运行make
而不是make -j
,则输出
echo target is: all
target is: all
我不知道您为什么需要指定-j
,但我最初的猜测是,提供-j
make正在执行每个all
食谱作为单独的工作,因此变量target = all
在相同作业中未设置
all:: dep;
dep:
echo target is: $(target)
因此$target
为空,输出为
echo target is:
target is: