整理出来的一个Makefile模板,新增了一个内容,调用gcc生成依赖文件,这样如果某个c文件包含的头文件被更新了,该c文件以及依赖于该c文件的obj文件都会被重新编译.
这个模板是按照我习惯的项目文件组织形式进行定义的,我的习惯是头文件放在include文件夹,代码放在src文件夹,目标文件放在obj文件夹,生成的静态库放在lib文件夹,而可执行程序放在bin目录,现在新增的依赖关系文件则放在deps文件夹.
这里是使用该Makefile模板的一个项目实例.
其中main.c和hello.c都包含了头文件hello.h,而test,h只有hello.c才包含,因此在test.h被更新的时候只有hello.o会被重新编译.可以自行进行测试(如使用touch命令更新文件的时间).
这个模板的缺点也是明显的,比如不支持把源代码放在多个文件夹编译等等.不过定制makefile模板我就没有想过做个大而全的东西来,至少目前没有,只要能够满足我的需求就行了:)