【问题标题】:Which operating systems support passing -j options to sub-makes?哪些操作系统支持将 -j 选项传递给子品牌?
【发布时间】:2015-03-13 03:30:50
【问题描述】:

来自 gnu make 的手册页:

“-j”选项是一种特殊情况(请参阅并行执行)。如果你设置 将它设置为某个数值“N”并且您的操作系统支持它 (大多数 UNIX 系统都会;其他通常不会),父系统 并且所有子制造商将进行沟通以确保只有 “N”个作业在它们之间同时运行。请注意,任何工作 标记为递归的(请参阅代替执行配方)不会 计入工作总数(否则我们可以获得“N”个子制作 运行,并且没有剩余的插槽可用于任何实际工作!)

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

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

【问题讨论】:

  • 答案here 涵盖了这一点。
  • 谢谢,这有帮助。我已经编辑了这个问题,还问你怎么知道

标签: makefile gnu-make


【解决方案1】:

要判断你的 make 是否支持这一点,请在 shell 提示符下运行以下命令:

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

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

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

然后使用该 makefile 运行 make

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 2015-11-12
    • 2022-06-30
    • 1970-01-01
    相关资源
    最近更新 更多