Makefile:避免在同一配方生成多个依赖项时多次执行配方

问题描述 投票:0回答:2

我有一个结构如下的makefile:

log_file output_1 output_2: input
    myprogram input
generate: log_file output_1 output_2

当我向

make
询问目标
generate
时,它会执行第一个配方三次。有没有办法让一个目标依赖于多个依赖项,这些依赖项都是由一个配方一起创建的,而不必多次调用配方?

makefile
2个回答
1
投票

啊,经典的 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 $^


0
投票

根据manual这可以通过使用特殊的

&:
分隔符来实现,像这样:

log_file output_1 output_2 &: input
    myprogram input
generate: log_file output_1 output_2
© www.soinside.com 2019 - 2024. All rights reserved.