如何调用位于其他目录中的Makefile?

24

我希望实现以下功能:

我想从位于不同目录的shell脚本中调用make(在其他目录中存在Makefile,可以使用abc路径)。我该怎么做?

由于shell脚本不允许我cd进入Makefile目录并执行make,因此我如何编写shell命令(通过给出要执行的Makefile的路径)来执行make


2
“Shell脚本不允许我'cd'到make文件目录”是什么意思?当然可以:“cd /p/a/t/h && make”完全可以正常工作。 - William Pursell
你好 William,感谢您的回复。出于某些原因,我无法在Shell脚本中使用cd命令。它会产生错误。这是我在Shell脚本中使用的语法:cd <路径>。 - Rookie
1个回答

34

GNU make接受许多选项,特别是-C用于在运行之前更改目录,-f用于提供Makefile以进行跟随。

适当地结合它们。

考虑使用remake来简化与Makefile相关的调试(特别是使用-x)。 对于GNU make 4或更高版本,还可以使用make --trace

您可以拥有自己的可执行shell脚本(例如,在您的$ HOME / bin /中,并且在您的 $ PATH 中),该脚本同时使用cdmake)。

您可以考虑其他构建自动化工具(例如ninja

还要阅读P.Miller的论文Recursive Make considered harmful


非常感谢!我会看看这些替代方案的! - Rookie
我该如何调用其他目录中存在的C程序(而不是使用make)?我在另一个目录中有.o文件。 - Rookie
你应该提出另一个问题。你首先需要将你的C程序编译成可执行文件,然后通过给出其完整路径来运行该可执行文件。请注意,*.o文件不是可执行二进制文件。 - Basile Starynkevitch
谢谢Basile!我也能做到这个。 - Rookie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接