1

这就是我在 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. 我找不到任何有关如何提取此信息的文档。

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

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

4

1 回答 1

2

您所要做的就是在命令行前加上一个+字符,因此 make 知道您正在调用另一个子 make 过程:

default:
        + cd proj && $(MAKE_381)

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

于 2013-02-26T13:35:08.623 回答