这就是我在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
传递参数。
答案 0 :(得分:2)
您只需在命令行前加上+
字符,因此make知道您正在调用另一个子制作过程:
default:
+ cd proj && $(MAKE_381)
如果您的命令直接使用变量MAKE
,那么这将是自动的,但由于您使用的是另一个变量名称(MAKE_381
),因此您必须明确地执行此操作。