Makefile GNU Make-提取作业参数并将其传递给另一个进程

Makefile GNU Make-提取作业参数并将其传递给另一个进程,makefile,Makefile,这就是我试图在Makefile中执行的操作: MAKE_381 := $(TOOLS)/bin/make-381 default: cd proj && $(MAKE_381) MAKE_381指的是MAKE v3.81二进制版本。这是必需的,因为proj目录包含makefile,这些文件仅与v3.81兼容,没有更新或更旧的版本 我需要让这个Makefile始终使用makev3.81来构建proj独立于开发人员在其系统上安装的GNU make版本 调用MAKE_381

这就是我试图在Makefile中执行的操作:

MAKE_381 := $(TOOLS)/bin/make-381

default:
    cd proj && $(MAKE_381)
MAKE_381
指的是
MAKE v3.81
二进制版本。这是必需的,因为
proj
目录包含
makefile
,这些文件仅与
v3.81
兼容,没有更新或更旧的版本

我需要让这个Makefile始终使用
makev3.81
来构建
proj
独立于开发人员在其系统上安装的GNU make版本

调用
MAKE_381
可以工作,但有一点需要注意,任何额外的参数(如并行作业的数量)都不会传递给
MAKE_381
。我找不到任何关于如何提取此信息的文档

我知道gnumake中有
MAKEFLAGS
变量,我知道它应该包含从命令行传递给make的任何额外参数,但不知何故,我发现这个值是空的


我不想硬编码传递给
make381
的作业数,而是应该根据调用的初始
Makefile
传递参数。

您所要做的就是在命令行前面加上
+
字符,这样MAKE就知道您正在调用另一个子MAKE进程:

default:
        + cd proj && $(MAKE_381)
如果您的命令直接使用变量
MAKE
,那么这将是自动的,但是由于您使用的是不同的变量名(
MAKE\u 381
),因此必须明确地执行此操作