我有一个结构如下的makefile:
log_file output_1 output_2: input
myprogram input
generate: log_file output_1 output_2
当我向
make
询问目标generate
时,它会执行第一个配方三次。有没有办法让一个目标依赖于多个依赖项,这些依赖项都是由一个配方一起创建的,而不必多次调用配方?
啊,经典的 makefile 问题。所有解决方案都感觉像是 hack;选择你的......(并原谅这里的密集文字)
generate : input ; myprogram $^ # if you never invoke "make output_1"
或
output_1 output_2 : logfile; @: # the choice of mitm is arbitrary
logfile : input ; myprogram $^
根据manual这可以通过使用特殊的
&:
分隔符来实现,像这样:
log_file output_1 output_2 &: input
myprogram input
generate: log_file output_1 output_2