c - 使用 make 时,目标文件应该依赖于它自己的头文件吗?

标签 c header makefile dependencies object-files

问题是:对于foo.c,一个在更大项目的其他地方使用的.c文件,foo.o对象应该Makefile 列表中的文件编译目标 foo.h 作为依赖?

foo.o: foo.c foo.h
    $(CC) $(CFLAGS) -c -o foo.o foo.c

这只是约定俗成的问题吗?

这是我到目前为止的想法,也是一个答案:

似乎对 foo.h 的任何合法更改都需要对 foo.c 进行相应的更改。因此,没有必要将 foo.h 列为依赖项。然而,这可能是个好主意,因为如果更改 foo.h 破坏了 foo.c 中的任何内容,我们希望立即得到通知(通过重新编译)。

最佳答案

很有可能更改头文件而不需要更改 .c 文件。比如改变常量的值等。

你总是想把源文件使用的所有头文件作为目标文件的先决条件。

关于c - 使用 make 时,目标文件应该依赖于它自己的头文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20290438/

相关文章:

c - 为什么 C99 编译器不针对 boolean 值将 "!a && b"优化为 "a < b"?

c - 从 header 中读取 sh_name 每次都会返回一个值

c - Makefile 无需指定即可编译所有 .c 文件

c++ - 在 OS X 上编译 lsd_slam 会抛出链接错误 ld : library not found for -lGL

c - 我的代码似乎在结束之前没有运行

c# - 当从 C# 调用/编码(marshal)此结构到 C-DLL 时,为什么此字符串为空?

c++ - ldap_modify 函数通过访问冲突?

c - 在参数列表中声明的“struct”

c++ - 头文件中的一个函数使用的函数

makefile - 有人知道从 Makefile 生成点 (graphviz) 文件的工具吗?