Makefile - 将作业参数传递给子 makefile

标签 makefile jobs

我有一个调用多个其他生成文件的生成文件。

我想将 -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/

相关文章:

c - 如何编译链接到不同 files.o 的源文件的多个实例

makefile - makefile 中的 .PHONY 用法

c# - 在代码中使用 Hangfire job id

node.js - NodeJS 如何在作业失败后的特定时间内使用 bull 重试队列作业

sql-server - 在 Azure 上创建弹性作业代理后,导出失败

linux -/usr/local/include/SFML 权限被拒绝

python - 处理 makefile 对 python 数据分析的作用的最先进方法是什么?

c - 为什么 * 和 % 在此规则中表现不同?

jobs - 每个人都如何在解析服务器上实现计划作业/云作业?

azure-devops - Azure Devops 计划的管道不会触发