makefile中忽略变量定义

时间:2015-08-12 09:51:34

标签: makefile

来自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在哪里?

1 个答案:

答案 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: