[英]Automatic Dependency Generation
我正在阅读制作手册中的“ 自动依赖项生成” ,但不知道为什么需要此功能。 我正在研究并从头开始编写的项目的结构如下:
在生成文件中,我传递-I .
到编译器。 当它在目录X中遇到.cpp文件时,它将在同一目录(或.
目录)中搜索.h文件。 解析.h文件时,它将遇到相对于的包含.
文件夹,因此它将知道在哪里寻找它们。
现在,如果代码可以像我上面描述的那样结构化,为什么有人会生成带有-M
标志的依赖项列表并与sed混淆以生成晦涩的.d文件(依赖项文件)? 我看不出从代码文件生成依赖关系的特定列表的意义。
因为实际上,每个源文件都将依赖于多个头文件。 如果您没有在每次这些标头更改时都重新编译源文件,则很有可能会导致二进制文件不一致。
这就是makepp的工作方式。 依赖关系会自动检测。 在您的情况下,您甚至不需要makefile(如果您不介意在命令中指定目标)。
内置链接器规则具有自动推导目标文件的优点。 如果您说makepp proggie
,它将扫描proggie.c(或.cpp或您拥有的任何文件)以查找包含语句。 对于每个语句,它将查看是否可以构建匹配的.o文件,如果是,则以递归方式对其进行扫描。 然后,将以这种方式发现的所有.o文件构建并链接在一起。
或者,您的makefile可能只是一个衬里,以避免每次都指定目标:
$(phony all): proggie
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.