创建嵌套的makefile

Nav*_*K N 8 nested makefile

我正在学习makefile,我知道如何创建一个简单的makefile.我正在转向嵌套的makefile.这是我的目录结构

/src
...makefile
...main.cpp
...foo
......makefile
......foo.cpp
......foo.h
Run Code Online (Sandbox Code Playgroud)

当调用root makefile时,它会调用目录foo中的makefile .这是我的问题

  1. 我应该使用哪个makefile来编写链接所有目标文件的代码?如果它在根makefile中,我是否需要在那里指定所有目标文件名?
  2. 这个嵌套的makefile是最佳实践吗?或者只有一个makefile在root上是好的吗?

任何帮助都会很棒!

dmc*_*kee 16

有很多关于可说没有这样做.阅读递归使得被认为是有害的.也以PDF格式.

简短的短版本是递归make有效地构建了几个不相交但可能重叠的依赖树,并且不能保证正确或最大效率的构建.如果你希望并行构建,问题会变得更糟.

要解决这个问题,你需要安排一个单一的非递归make,它构建一个单一的全跨越依赖树,允许make解决所有上述问题.

非递归make的示例结构和编写它们时出现的几个棘手问题的解决方案可以在原始论文和以下答案中找到:

  • 如果不这样做是一个坏主意,也许应该建议替代解决方案作为答案。 (2认同)
  • 是的。该答案的形式在网站上不再被接受。这些修改只是部分修复了缺陷,但确实是有问题的。 (2认同)