全部学习汇总: GreyZhang/g_makefile: Learn makefile from all kinds of tutorials on the web. Happy hacking and let's find an common way so we may don't need to touch makefile code any more! (github.com)
欢迎路过的YUAN类朋友相互交流,以下是我的联系方式:
Email:greyzhang@126.com
微信:grey0612
我曾经尝试过多次学习makefile的编写,发现这个东西也不是很好写。学习make的使用难度似乎不亚于一门新的编程语言。过去我曾经多次采用偷懒的方式,随便找个makefile大致找一下规律然后自己写个脚本把所需的新的makefile生成出来,我也曾经求助于cmake等自动生成工具。这曾经让我实现过很多简单的makefile,也让我把gcc能够简单测试起来,不过距离我能够游刃有余使用其他的编译器还有很长的路要走。至于CodeWarrior,我则是采用了模仿然后使用脚本修改的方式,倒也能够满足我的要求。
有时候想想,学习基础的技术就如同武侠小说里的内功一般。如果稳扎稳打最后出来的效果肯定是比投机取巧要好一些,我也想稳扎稳打最终能够在此技术上有所小成。我把自己的能力进阶分为几个小段,最终的目的当然是能够写出多层级、多目录的复杂makefile,而且使用非gcc的编译器。
今天先完成第一个小目标——同一个目录下的代码文件编译。
我的工程目录树如下:
code1.c
code1.h
code2.c
code2.h
defs.h
main.c
makefile
在同一个目录下存在以上文件,而makefile文件则是我的makefile。描述的内容如下:
1,所有的c文件都依赖于defs.h
2,codeX.c依赖于codex.h
3,main.c依赖于所有头文件
4,最终生成的结果为target
编写makefile如下:
运行效果如下:
测试了文件依赖关系也都能够完成识别,这一个小目标算是完成。
这个例子似乎比较简单,稍微看几分钟make手册的人都能够写出来。下一次的晋级目标:完成c文件依赖的自动推导。