我有一个并行测试套件(perl prove -j XXX)。如果用户键入make -j 8 all,我希望测试套件使用相同的参数运行:prove -j XXX t。如果没有,那么我希望它能够运行单线程。因为我知道测试套件是顶级的并且依赖于所有二进制目标,所以我非常简单地传递用户指定的并行参数。
gnu make中是否有允许获取用于运行make的命令行参数?或者用户是否必须执行以下操作:make -j 8 PLL = 8 all。
答案 0 :(得分:1)
根据手册-j
在某些情况下传递给某些子品牌(通过MAKEFLAGS
),但不是大多数,并且(显然)不会出现在MAKEFLAGS
中顶级的。因此,遗憾的是,我没有看到任何获取此信息的方法。
但是,您可以让用户仅通过变量赋值PLL=8
传递值,并手动将其MAKEFLAGS
添加到MAKEFLAGS += -j$(PLL)
,并在适当的情况下保护-j
toplevel makefile,并且仅当MAKEFLAGS
中的{{1}}的某些其他值不在{{1}}时(如果实际上可能以某种方式发生)。我认为就作业服务器行为而言,这将正常工作。