这部分的知识来自于GNU make的使用手册<2.5 Letting make Deduce the Recipes>,make是可以自动推导出c文件的依赖关系的。不过,前提是你想让你的object文件跟你的c文件除了扩展名之外的文件名相同。
这样,之前在小结1中写过的makefile就可以精简修改为如下方式:
此处需要注意的是,CC必须指定。在makefile中,这是默认的c编译器的名字。关于这部分,GNU make手册中或许会有相应的说明。学习到目前的章节暂时还没有看到相关的描述,不过这个倒是自己根据经验尝试试出来了。
如果对makefile进行更进一步的精简化、规整化,那么可以把重复出现的部分变量化。这在一定程度上跟我们学习到的任何编程语言都是想通的。
继续修改makefile如下:
两个版本的运行效果全都一致:
继续往下走,我觉得makefile应该加入文件夹的处理了。下一次的尝试争取能够把code1、code2相关代码分到两个文件夹中进行编译。如果能够实现全部的功能,那基本上就能够处理一个小规模的软件工程了。如果不好实现,或许会考虑先完成没有头文件依赖的makefile,然后在那个基础上更进一步。