来自gnu make的手册页:
'-j'选项是一种特殊情况(参见并行执行)。如果你设置 它为某个数字值'N',您的操作系统支持它 (大多数UNIX系统都会;其他人通常不会),父make 并且所有子品牌将进行沟通以确保只有 'N'工作在他们之间同时运行。注意任何工作 标记为递归(请参阅而不是执行食谱)没有 计算总工作数(否则我们可以得到'N'子工作 正在运行并且没有留下任何实际工作的插槽!)
如果您的操作系统不支持上述通信,那么 '-j 1'总是放入MAKEFLAGS而不是你的值 指定。这是因为如果将'-j'选项传递给 sub-make,你会获得比你更多的并行运行的工作 要求。如果你给'-j'没有数字参数,那就意味着要运行 尽可能多的工作并行,这是传递下来,因为 多个无穷大不超过一个。
哪些常见操作系统支持或不支持此行为? 你怎么知道你的操作系统是否支持它?
答案 0 :(得分:4)
要判断make是否支持此功能,请在shell提示符下运行以下命令:
echo 'all:;@echo $(filter jobserver,$(.FEATURES))' | make -f-
如果它打印'jobserver',那么你有支持。如果它什么都不打印,你就没有支持。或者,如果您的操作系统不支持echo
或管道,请创建一个包含以下内容的小型makefile:
all:;@echo $(filter jobserver,$(.FEATURES))
然后使用该makefile运行make
。