从makefile中调用make

时间:2013-02-20 01:00:50

标签: makefile gnu-make multiple-makefiles

我有一个Makefile,它可以从一个新的shell中完美地调用,即:

make -C /dir/

但是,如果我从另一个 Makefile调用此Makefile,则由于某些复杂的依赖性问题而失败。清楚地了解嵌套调用,通过make[1]:等打印明显,我怀疑make是以某种方式与其子进程共享变量。

有没有在Makefile中调用 clean make?如果我的构建工作是从一个干净的shell,它应该可以从另一个Makefile调用它而不解决脚本内部的恐怖! :)

谢谢!

2 个答案:

答案 0 :(得分:10)

make确实在递归调用时分享了它的一些环境。正如https://www.gnu.org/software/make/manual/html_node/Options_002fRecursion.html#Options_002fRecursion中所建议的那样,您可能希望以这种方式编写递归调用:

sub-make:
        $(MAKE) -C /dir/ MAKEFLAGS=

看看它是否有帮助。您还可以使用exportunexport指令(https://www.gnu.org/software/make/manual/html_node/Variables_002fRecursion.html#Variables_002fRecursion)来控制导出到子品牌的变量

答案 1 :(得分:1)

调用者制作中的一些环境变量打破了被调用者的制作(CFLAGS等...)

我的解决方案是将环境区分为干净的外壳和呼叫点。然后我手动将问题变量添加到列表中并创建了一些save_env / restore_env脚本。

谢谢!