【发布时间】:2011-03-14 19:40:05
【问题描述】:
我已经搜索了一个小时,这个信息似乎无处...
我希望能够在 Makefile 中提取(并可能使用)通过 -j 选项传递的请求的 make“作业”数量,或者在子 make 的情况下由 Make 本身传递。
到目前为止,我看到的最有希望的是 $(MAKEFLAGS) 变量,但是在我的系统上(如果我这样做,比如说 make -j2)这个变量的内容只有“--jobserver-fds= 3,4 -j”。有什么办法可以得到 -j 传递的实际作业数?
【问题讨论】:
-
你为什么要这样做?这与 make 的精神背道而驰,我很确定有更好的方法来实现你想做的事情。
-
您可以在顶级 Makefile 中将作业数设为可变参数,该 Makefile 将在内部调用
make -j。 -
@static_rtti,我希望更多地了解 make 的实际执行(特别是当它使用 $(MAKE) 调用自身时)。例如,所有 sub-make 的 job_slots 值是否都为 1,或者 sub-make 是否可以传递顶级可用的 N 个作业的某个子集?按照 Raphael 的建议阅读源代码可能是确定这一点的方法,但我认为尝试 make 本身可能更简单。
-
--jobserver-fds 的参数是用于传递作业令牌的文件描述符。 mad-scientist.net/make/jobserver.html 对整个方案有很好的描述。
标签: gnu-make