2013-02-26 66 views
1

这是什么,我想在我的Makefile做:GNU制作 - 提取作业参数,并将其传递给另一个进程

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

default: 
    cd proj && $(MAKE_381) 

MAKE_381make v3.81二进制版本。这是必需的,因为proj目录包含Makefiles,它们仅与v3.81兼容,并且没有更新或更旧的内容。

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

调用MAKE_381的工作,但有一个警告,任何额外的参数,如并行作业的数量,不会传递到MAKE_381。我找不到有关如何提取此信息的任何文档。

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

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

回答

2

所有你需要做的就是前面加上+字符的命令行,所以要知道,你是在调用另一个子make过程:

default: 
     + cd proj && $(MAKE_381) 

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

相关问题