makefile文件中.h文件的位置有关问题

makefile文件中.h文件的位置问题
在GNU/Linux书中对下面三个源文件写的makefile文件煞是看不懂。

/*源文件--helper.c*/
#include   <stdio.h>
void   printInfo(void){}

/*源文件--helper.h*/
void   printInfo(void);

/*源文件--howdy.c*/
#include   <stdio.h>
#include   "helper.h "
int   main(void){}

作者在写makefile文件中使用了下面规则:
howdy   :   howdy.o   helper.o   helper.h
            gcc   ......
howdy.o   :   howdy.c
            gcc   ......
helper.o   :   helper.c   helper.h
            gcc   ......
==================================================================
我认为作为依赖的helper.h的位置是有问题的
(1)目标howdy中不用依赖helper.h。在连接过程中不用helper.h文件
(2)目标howdy.o要依赖helper.h文件。因为在修改helper.h后howdy.o需要重新修改
(3)目标helper.o不需要依赖helper.h文件
所以我认为下面的规则更合适一些:
howdy   :   howdy.o   helper.o
            gcc   ......
howdy.o   :   howdy.c   helper.h
            gcc   ......
helper.o   :   helper.c
            gcc   ......
============================================================
小弟刚学linux编程,对上面认识不到的地方大家见谅




------解决方案--------------------
Makefile里一般不写.h的。

编译的时,编译.cpp。会将.h就地插入进来,形成一个编译单元。

------解决方案--------------------
h 文件不参与连接,
但是编译时候还是需要的 .......
------解决方案--------------------
一般.h不写入到依赖里面,因为.h里面一般都是接口,如果系统分析、概要设计做的好的话,那么.h是不应该经常变化的,而且,项目只要稍微做大一点,就会有很多的.h文件,如果所有的.h文件都放在依赖列表会很长很乱,手工去写也容易出错。对于.h的依赖,一般是通过自动编译工具,自动生成依赖,然后编译。
对于很少变化的.h文件,万一有了变动,那么更好的选择是进行一次完全的rebuild,make clean;make all。