在GNU Make中强制变量扩展

Ale*_*x B 4 makefile gnu-make

如何强制GNU Make变量立即评估?请考虑以下示例:

TARGET:=fred
wilma:
    mkdir -p $(TARGET)
TARGET:=barney
betty:
    mkdir -p $(TARGET)
all: one two
.PHONY: one two all
Run Code Online (Sandbox Code Playgroud)

使用make all,Make只会创建"barney",因为只有在读取了makefile并分配了最终值("barney")后才会计算配方字符串.

在这种情况下,我需要创建"fred"和"barney".

Bet*_*eta 7

wilma: TARGET:=fred
betty: TARGET:=barney
wilma betty:
     mkdir -p $(TARGET)
Run Code Online (Sandbox Code Playgroud)