我正在通过Automatic Dependency Generation在make manual阅读,我不明白为什么需要此功能。该项目是我的工作,我开始从头开始编写的结构是这样的:自动依赖生成
- 各单位(库)有它自己的文件夹
- 每个.cpp文件应包括具有相同的单个h文件名称来自同一个目录。好的,这个规则可能有点过于严格,就像循环依赖一样,在这种情况下,我可能会包含另一个.h文件,正如下一个规则
- 中所述,在.h文件中包含其他头文件时,如果依赖关系位于另一个单元(库)中,则总是使用相对于项目根目录的路径。否则,只需包含文件的名称即可。
在makefile中,我将-I .
传递给编译器。当它遇到目录X中的.cpp文件时,它将在同一目录(或在.
目录中)中搜索.h文件。解析.h文件时,它将遇到包含相对于.
文件夹的信息,因此它将知道在哪里查找它们。
现在,如果代码可以像我上面描述的那样构造,那么为什么有人要生成-M
标志的依赖关系列表,并将sed混乱以产生一个难以理解的.d文件(依赖关系)?我没有看到从代码文件生成特定的依赖关系列表。
哦,对了......我明白了。但在编译.cpp文件之前,不会检查整个依赖关系树的更改吗? – 2012-07-06 00:11:17
@MihaiTodor:Make不知道你的依赖是什么。所有Make可以做的是找出是否需要根据依赖关系的变化重新运行规则。您需要为其提供每个目标的依赖列表。 – 2012-07-06 00:13:21
你说得对。现在我明白了。非常感谢你! – 2012-07-06 00:19:33