makefile 的规则疑问,请教。
[size=18px]我最近在看《GNU Linux 编程指南》,在其中的第四章makefile中,有个小小疑问:
总共3个文件:
helper.h
helper.c
howdy.c 中包含了helper.h头文件,就这样。
按理说,写makefile的时候只需要:
C/C++ code
howdy: howdy.o helper.o
gcc howdy.o helper.o -o howdy
howdy.o: howdy.c
gcc -c howdy.c
helper.o:helper.h helper.c
gcc -c helper.c
clean:
rm howdy *.o
就可以了,而且我运行也没问题。
但是,为什么书上在第一句的依赖项,非得要加上一个 helper.h呢?
howdy: howdy.o helper.o helper.h
这没必要吧。我后面在设定helper.o 的时候不是已经包含了helper.h吗?[/size]
------解决方案--------------------makefile好多都可以省略的,书上的是比较正规的,随着深入你就知道了
------解决方案--------------------书上的东西也不是100%正确的,当然你自己运行过的才是正确的。呵呵
理论上都是.o文件了,已经到链接的阶段了,应该是不需要.h文件了。
------解决方案--------------------
howdy: howdy.o helper.o helper.h
这个不影响编译
只是明确表示一个依赖关系:howdy执行程序依赖于helper.h
这样helper.h改动后,直接make就能更新howdy
如果没有这儿的这个helper.h,那么helper.h更新后,执行make,将会提示“没有什么可以编译的”