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

时间:2013-02-26 02:02:36

标签: makefile

这就是我在Makefile中尝试做的事情:

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

default:
    cd proj && $(MAKE_381)

MAKE_381指的是make v3.81二进制文件的版本。这是必需的,因为proj目录包含Makefiles,它只与v3.81兼容,而且没有更新或更旧。

我需要让这个Makefile始终使用make v3.81构建proj,而不依赖于开发人员在他/她的系统上安装的GNU版本。

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

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

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

1 个答案:

答案 0 :(得分:2)

您只需在命令行前加上+字符,因此make知道您正在调用另一个子制作过程:

default:
        + cd proj && $(MAKE_381)

如果您的命令直接使用变量MAKE,那么这将是自动的,但由于您使用的是另一个变量名称(MAKE_381),因此您必须明确地执行此操作。