自动生成依赖项
Automatic Dependency Generation
我正在阅读制作手册中的自动依赖项生成,但我无法弄清楚为什么需要此功能。我正在从事的项目和我从头开始编写的项目结构如下:
- 每个单元(库)都有自己的文件夹
- 每个.cpp文件都应包含来自同一目录的具有相同名称的单个 .h 文件。好的,这个规则可能有点过于严格,就像在循环依赖的情况下一样,在这种情况下,我可能会包含另一个 .h 文件,就像下一个规则中所述
- 在 .h 文件中包含其他标头时,如果依赖项位于另一个单元(库)中,请始终使用相对于项目根目录的路径。否则,只需包含文件名。
在生成文件中,我-I .
传递给编译器。当它在目录 X 中遇到.cpp文件时,它将在同一目录(或.
目录中)搜索 .h 文件。解析 .h 文件时,它会遇到相对于 .
文件夹的包含,因此它会知道在哪里查找它们。
现在,如果代码可以像我上面描述的那样结构化,为什么有人想要生成带有 -M
标志的依赖项列表并使用 sed 来生成一个晦涩的 .d 文件(依赖项 fie)?我看不出从代码文件生成特定的依赖项列表的意义。
因为在实践中,每个源文件都依赖于多个头文件。 如果每次更改任何标头时都不重新编译源文件,则很有可能最终会得到不一致的二进制文件。
这就是makepp的工作方式。 自动检测依赖项。 在您的情况下,您甚至不需要 makefile(如果您不介意在命令中指定目标)。
内置链接器规则具有自动推断对象文件的好处。 如果你说makepp proggie
,它将扫描proggie.c(或.cpp或任何你拥有的)包含语句。 对于每个语句,它将查看是否有可以构建的匹配的 .o 文件,如果有,则递归扫描。 然后以这种方式发现的所有 .o 文件构建并链接在一起。
或者,您的生成文件可以是一行,以避免每次都指定目标:
$(phony all): proggie
相关文章:
- 查找自动生成键并具有线性内存消耗的小型关联数组
- Qt:更新 QString 时自动生成的代码失败
- 我可以说服自动生成的构造函数将我的 POD 类成员归零吗?
- 在 C++ 中自动生成方法
- 删除了所有自动生成的构造函数/运算符的类仍然可以从函数返回吗
- 在编译时自动生成用于稀疏数组索引的switch语句
- 如何在C++中自动生成运算符=?
- C++自动生成的具有常量和非常量引用的复制构造函数
- 如何使用 boost/operator.hpp 自动生成 == 运算符?
- Qt自动生成的.rc文件无法打开包含文件'windows.h'
- 阅读自动生成的 DOLFIN c++ 库文档
- 修改Mongodb源代码以禁用文档的自动生成"_id"字段
- 在自动生成的文件之间生成依赖关系
- 从eclipse自动生成的依赖项中排除文件夹
- 自动生成的依赖项导致编译速度缓慢
- 自动生成依赖项
- 生成文件:自动生成二进制文件的依赖项
- 尝试自动生成依赖项时"make: *** No targets. Stop."
- 生成文件自动 SRC 文件检测和依赖项生成
- (make/g++)包含自动生成的依赖目标的完整路径?(或方法)