哪些操作系统支持将-j选项传递给子产品?

时间:2015-03-13 03:30:50

标签: makefile gnu-make

来自gnu make的手册页:

  

'-j'选项是一种特殊情况(参见并行执行)。如果你设置   它为某个数字值'N',您的操作系统支持它   (大多数UNIX系统都会;其他人通常不会),父make   并且所有子品牌将进行沟通以确保只有   'N'工作在他们之间同时运行。注意任何工作   标记为递归(请参阅而不是执行食谱)没有   计算总工作数(否则我们可以得到'N'子工作   正在运行并且没有留下任何实际工作的插槽!)

     

如果您的操作系统不支持上述通信,那么   '-j 1'总是放入MAKEFLAGS而不是你的值   指定。这是因为如果将'-j'选项传递给   sub-make,你会获得比你更多的并行运行的工作   要求。如果你给'-j'没有数字参数,那就意味着要运行   尽可能多的工作并行,这是传递下来,因为   多个无穷大不超过一个。

哪些常见操作系统支持或不支持此行为? 你怎么知道你的操作系统是否支持它?

1 个答案:

答案 0 :(得分:4)

要判断make是否支持此功能,请在shell提示符下运行以下命令:

echo 'all:;@echo $(filter jobserver,$(.FEATURES))' | make -f-

如果它打印'jobserver',那么你有支持。如果它什么都不打印,你就没有支持。或者,如果您的操作系统不支持echo或管道,请创建一个包含以下内容的小型makefile:

all:;@echo $(filter jobserver,$(.FEATURES))

然后使用该makefile运行make