我有一个调用多个其他生成文件的生成文件。
我想将 -j 参数传递给其他 makefile 调用。
类似(make -j8):
all:
make -f libpng_linux.mk -j$(J)
其中 $(J) 是 -j8 中的值 8。我绝对发誓我以前做过这个,但我找不到我的例子。
$(MAKEFLAGS) 似乎包含 --jobserver-fds=3,4 -j 不管 -j2 或 -j8
编辑:可能的解决方案:
将很快将此作为答案发布。
这似乎是一种不用担心的解决方案。调用主 makefile 时包括 -j8。 make 的子调用应如下所示:
all:
+make -f libpng_linux.mk -j$(J)
注意 make 前面的“+”。当我尝试并行构建时,我注意到 make 抛出警告:make[1]:warning:jobserveravailable:using-j1。将“+”添加到父规则。
最佳答案
Only certain flags go into $(MAKEFLAGS)
. -j
不包括在内,因为子制造商相互通信以确保发生适当数量的作业
此外,您应该使用 $(MAKE)
而不是 make
, 自 $(MAKE)
将始终评估为正确的可执行文件名称(可能不是 make
)。
关于Makefile - 将作业参数传递给子 makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9147196/