自动依赖生成

Mih*_*dor 0 c++ dependencies gcc makefile compilation

我正在阅读make 手册中的自动依赖项生成,但我不明白为什么需要此功能。我正在开发并从头开始编写的项目的结构如下:

  • 每个单元(图书馆)都有自己的文件夹
  • 每个 .cpp 文件应包含同一目录中具有相同名称的单个 .h 文件。好的,这个规则可能有点过于严格,就像在循环依赖的情况下一样,在这种情况下我可能会包含另一个 .h 文件,就像下一个规则中所描述的那样
  • 在 .h 文件中包含其他标头时,如果依赖项位于另一个单元(库)中,请始终使用相对于项目根目录的路径。否则,只需包含文件名。

在 makefile 中,我传递-I .给编译器。当它在目录X中遇到.cpp文件时,它会在同一目录(或目录中)中搜索.h文件.。当解析 .h 文件时,它会遇到相对于该.文件夹的包含,因此它会知道在哪里查找它们。

现在,如果代码可以像我上面描述的那样构造,为什么有人想要生成带有该标志的依赖项列表-M并使用 sed 来生成一个晦涩的 .d 文件(依赖项 fie)?我不认为从代码文件生成特定的依赖项列表有什么意义。

Oli*_*rth 5

因为在实际应用中,每个源文件都会依赖多个头文件。如果每次这些标头发生更改时您不重新编译源文件,那么您很可能会得到不一致的二进制文件。