make -jXXX:我怎样才能获得XXX

时间:2014-08-25 20:37:02

标签: makefile gnu-parallel

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

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

1 个答案:

答案 0 :(得分:1)

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

但是,您可以让用户仅通过变量赋值PLL=8传递值,并手动将其MAKEFLAGS添加到MAKEFLAGS += -j$(PLL),并在适当的情况下保护-j toplevel makefile,并且仅当MAKEFLAGS中的{{1}}的某些其他值不在{{1}}时(如果实际上可能以某种方式发生)。我认为就作业服务器行为而言,这将正常工作。