1

我有一个并行测试套件(perl proof -j XXX)。如果用户键入 make -j 8 all,我希望使用相同的参数运行测试套件:prove -j XXX t。如果没有,那么我希望它单线程运行。因为我知道测试套件是顶级的并且依赖于所有二进制目标,所以我想非常简单地传递用户指定的并行参数。

gnu make 中是否有允许获取用于运行 make 的命令行参数的东西?或者用户是否必须执行以下操作:make -j 8 PLL=8 all。

4

1 回答 1

1

根据手册,在某些情况下-j会传递给一些子品牌(通过MAKEFLAGS),但不是大多数,并且(显然)不存在于MAKEFLAGS顶级品牌中。因此,不幸的是,我看不到任何获取此信息的方法。

但是,您可以让用户仅通过变量赋值传递值并手动PLL=8将其添加到自己(实际上可以以某种方式发生)。我相信就 make jobserver 行为而言,这将正常工作。MAKEFLAGSMAKEFLAGS += -j$(PLL)-jMAKEFLAGS

于 2014-08-25T21:16:59.373 回答