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

Hal*_*far 6 jobs makefile

我有一个调用多个其他makefile的makefile.

我想将-j param传递给其他makefile调用.

像(make -j8)这样的东西:

 all:
     make -f libpng_linux.mk -j$(J)
Run Code Online (Sandbox Code Playgroud)

其中$(J)是-j8的值8.我绝对发誓我以前做过这件事,但我无法找到我的榜样.

$(MAKEFLAGS)似乎包含--jobserver-fds = 3,4 -j,无论-j2还是-j8

编辑:可能的解决方案

将很快发布这个答案.

这似乎是一个不用担心的解决方案.调用主makefile时包含-j8.对make的子调用应该如下所示:

 all:
      +make -f libpng_linux.mk -j$(J)
Run Code Online (Sandbox Code Playgroud)

注意make前面的"+".我注意到当我尝试并行构建时发出警告:make [1]:警告:jobserver unavailable:使用-j1.在父制定规则中添加"+".

m42*_*42a 6

只有某些标志会进入$(MAKEFLAGS)-j不包括在内,因为子公司相互沟通以确保发生适当数量的作业

另外,您应该使用$(MAKE)而不是make,因为$(MAKE)它将始终评估为正确的可执行文件名称(可能不是make)。