由于两个目标各自具有特定的先决条件,并且只有一个命令来构建它们,因此我们可以使用此 makefile
a.target: a.req
build_a_and_b
b.target: b.req
build_a_and_b
但是如果需要构建 2 个目标,则该命令将运行两次。
我发现在最近的 make 中存在分组目标,其中考虑到生成多个目标的命令:
a.target b.target &: a.src b.src
build_a_and_b
这解决了上述问题,但引入了新的异常:如果没有目标是过时的,但a.src
比 更新,则b.target
命令会按不应运行的方式运行,因为b.target
仅依赖于b.src
。当然,在切换 a 和 b 角色时也存在相同的错误。
当目标比其自身的源旧时,如何才能仅执行一次命令?