我正在阅读制作手册中的自动依赖生成,但我无法弄清楚为什么需要此功能。我正在从事并从头开始编写的项目的结构如下:
- 每个单元(库)都有自己的文件夹
- 每个 .cpp 文件应包含来自同一目录的同名的单个 .h 文件。好的,这条规则可能有点过于严格,比如在循环依赖的情况下,在这种情况下,我可能会包含另一个 .h 文件,就像下一条规则中描述的那样
- 在 .h 文件中包含其他头文件时,如果依赖项位于另一个单元(库)中,请始终使用相对于项目根目录的路径。否则,只需包含文件名。
在makefile中,我传递-I .
给编译器。当它在X目录中遇到一个.cpp文件时,它会在同一个目录(或目录中)搜索.h文件.
。在解析 .h 文件时,它会遇到相对于.
文件夹的包含,因此它会知道在哪里查找它们。
-M
现在,如果代码可以像我上面描述的那样结构化,为什么有人要生成一个带有标志的依赖项列表并使用 sed 来生成一个晦涩的 .d 文件(依赖项 fie)?我看不到从代码文件生成特定依赖项列表的意义。