0

我在我的 GNU makefile(以及其他)中有几个形式的规则

a b c d: x
        program $^

ieprogram只需一次调用即可创建文件 a、b、c 和 d。当我使用 运行它时gmake -j 4make 会产生四个program并行运行,因为这些文件都不存在,并且没有一个文件依赖于另一个文件。

我可以通过提供“假依赖链”来解决这个问题(因为没有更好的术语):

a: x
        program $^
b: a
c: b
d: c

有没有更优雅的方法来教 gmakeprogram只运行一次,即使是在并行构建中?

编辑:任何解决方案都应该遵守对的依赖x并且如果a - d是最新的关于x.

4

1 回答 1

1

如果您的目标都共享一个共同的词干,那么您可以使用模式规则:

%.a %.b %.c %.d:
        touch $*.a $*.b $*.c $*.d

如果他们不这样做,那么您唯一能做的就是创建一个哨兵文件:

a b c d: .sentinel ;
.sentinel: ; touch a b c d $@
于 2013-06-20T14:41:14.553 回答