Makefile 新目标如何使用附加参数调用以前的目标?
我有这样的代码片段:Makefile 新目标如何使用附加参数调用以前的目标?,makefile,gnu-make,Makefile,Gnu Make,我有这样的代码片段: .PHONY: program1 program2 a=A b=B c=C program1: @python example.py a=$(a) b=$(b) program2: program1 c=$(c) d=d 由于DRY原则,我不想以调用program1的方式复制代码和组合program2 但我知道program1不在路径中 如何正确定义程序2目标?规则的配方包含shell命令生成不会直接执行它们。它用来执行它们的shell与任何其他s
.PHONY: program1 program2
a=A
b=B
c=C
program1:
@python example.py a=$(a) b=$(b)
program2:
program1 c=$(c) d=d
由于DRY原则,我不想以调用program1
的方式复制代码和组合program2
但我知道program1
不在路径中
如何正确定义
程序2
目标?规则的配方包含shell命令<代码>生成不会直接执行它们。它用来执行它们的shell与任何其他shell一样,不能将make
目标名称识别为命令,因此菜谱不能将make
目标用作命令
但是配方可以运行make
,这是一个传统上称为“递归make”的过程。例如,此规则将实现我认为您所描述的:
program2:
$(MAKE) program1 c='$(c)' d=d
MAKE
变量通常会扩展到您使用的MAKE命令的名称——通常只是MAKE
,但可能类似于gmake
或/special/path/MAKE
。您还可以在makefile中自己重新定义它,例如,可以向它添加标志。规则的配方包含shell命令<代码>生成不会直接执行它们。它用来执行它们的shell与任何其他shell一样,不能将make
目标名称识别为命令,因此菜谱不能将make
目标用作命令
但是配方可以运行make
,这是一个传统上称为“递归make”的过程。例如,此规则将实现我认为您所描述的:
program2:
$(MAKE) program1 c='$(c)' d=d
MAKE
变量通常会扩展到您使用的MAKE命令的名称——通常只是MAKE
,但可能类似于gmake
或/special/path/MAKE
。您还可以在makefile中自己重新定义它,例如,可以向它添加标志