我希望在我的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
[...]
答案 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)