Makefile 调用目标时如何更新变量?

Makefile 调用目标时如何更新变量?,makefile,gnu-make,Makefile,Gnu Make,我有一个变量,在调用虚假目标之前不应进行求值,因为它将有一个空值,例如: VAR = /home/directory/file .PHONY: target target: $(mkdir -p /home/directory) $(touch /home/directory/file) 在目标后面加一个右键:: target: $(eval VAR = /home/directory/file) 并删除第一行(VAR=…) 呃,这个makefile没有任何作用:您不想使

我有一个变量,在调用虚假目标之前不应进行求值,因为它将有一个空值,例如:

VAR = /home/directory/file

.PHONY: target
target: 
  $(mkdir -p /home/directory)
  $(touch /home/directory/file)
目标后面加一个右键:

target:
    $(eval VAR = /home/directory/file)

并删除第一行(
VAR=…

呃,这个makefile没有任何作用:您不想使用
$(mkdir-p/home/directory)
,它试图扩展一个名为
mkdir-p/home/directory
的make变量,该变量不存在,因此它会扩展为空字符串并被忽略。您只想直接编写shell命令,而不是将它们包含在
$(…)
中。我认为这是一个XY问题。我认为你试图做的可能不是一种很好的做事方式,但你没有给我们足够的细节来帮助我们实现你的实际目标。