如何调用shell来创建一个新的环境来在另一个make中运行make?

时间:2010-06-16 01:43:51

标签: recursion gnu-make

我希望在我的GNUmakefile中有一个调用新shell的目标规则,然后使用新shell的干净平板调用一个新的make。

这样做的语法是什么?

我尝试了这个,但它不起作用:

.PHONY: setup
setup:
 shell cd myDir; make; cd ..

无限重复以下错误:

make[1]: Entering directory `/disk4/home/user/parent'
shell cd myDir; make; cd ..
/bin/sh: shell: command not found
make[1]: Entering directory `/disk4/home/user/parent'
shell cd myDir; make; cd ..
/bin/sh: shell: command not found
[...]

3 个答案:

答案 0 :(得分:2)

(cd myDir ; make)

parens调用一个新的子shell,它有自己的“当前目录”。

答案 1 :(得分:1)

parens不是必需的。无论如何,配方中的每一行都在自己的shell中调用。您的配方似乎有一个多余的 shell 字符串,您的shell尝试将其作为命令执行(/ bin / sh(您的shell, make)抱怨{{1} })。

此外,在这种情况下,make shell: command not found参数很方便。

此外,从shell调用make时,请使用-C宏。

${MAKE}

答案 2 :(得分:0)

这是有效的:

.PHONY: setup
setup:
 (cd myDir; env --unset=MAKEFLAGS make)