【发布时间】:2015-06-10 09:17:16
【问题描述】:
在我的makefile中,我有一行
# in makefile:
SHELL := csh
.PHONY : foo
foo :
$(MAKE) -C foo
当调用make -j8(使用 GNU Make 3.81 运行 linux)时,我得到了
make -C foo
make[1]: Entering directory `/some/dir/foo'
make[1]: warning: jobserver unavailable: using -j1. Add `+' to parent make rule.
make[1]: Nothing to be done for `default'.
make[1]: Leaving directory `/some/dir/foo'
在我的父 makefile 中避免此警告的正确规则是什么?
(注意我查看了this 和this SO 问题,但找不到满意的答案。特别是+$(MAKE) -C foo 不起作用。也许我还应该说,在父项中使并行制作工作为打算。)
或者我的操作系统不支持并行子版本? (this 文档说大多数 unix 系统都这样做)。我怎样才能确定?
【问题讨论】:
-
可能是子make调用了另一个没有
+的子make并导致了这个警告? -
@MaximEgorushkin 显然不是 从问题中给出的
make的输出中可以清楚地看出。 -
嗯,输出提到了目标
default,而你的make规则在命令行中没有default。你在看正确的规则吗? -
@MaximEgorushkin 您正确地观察到了这一点。我确实在我的 makefile 中查看了错误的行,但即使使用正确的行(并且在修改它以使用
$(MAKE)之后),事情仍然保持不变。我已经修改了问题 -
我同意 Maxim 的观点:您向我们展示的示例运行良好,不会生成该消息。因此,如果您看到该消息,那么它是由您没有向我们展示的某些内容引起的。显然,我们无法帮助您发现您没有向我们展示的问题。您需要提出一个实际可重现的案例 (SSCCE)。例如,您是否在 makefile 中设置了 SHELL 变量?也许是,我不知道...
/usr/bin/csh?如果是这样,请不要这样做。