如果大家在Linux环境进行程序编写的话,那么大家就要了解makefie了。也许你会说Linux也有很多大的开发集成环境啊譬如Eclipse,QT等等,但是我要说的是这些开发环境只不过是隐藏了makefile的功能罢了。特别是在BootLoader和kernel移植的的时候不会makefile可能会很不方便。下面我来说说makefile的基本思想。
一:
target :约束条件
TAB cmd
这就是makefile的基本思想,它就是靠这样的关系一层一层地进行关联的。大家一定要注意的就是命令行前面一定要加TAB空格键
二:
接下来来说说变量。因为有了变量以后就可以使makefile变得更加简洁。makefile的变量主要有以下几种:
a=b
a:=b
a ?=b
a +=b
头两种属于延时变量,第三种属于立即变量,第四种是什么变量根据后面的变量的情况而定。
下面还有几种自动变量
$@ 表示目标文件
$^ 表示所有的依赖文件
$< 表示第一个依赖文件
可能还有很多其他函数以后再慢慢补充。哈哈
三:函数
关于函数这里就不多说了。有很多我也记不住,大家可以到网上搜一下。或者在读makefile文件的时候需要再查一下。
四:make的推理功能
如上图所示,由于make有推理功能所以很多语句就省略了。譬如第一个完整的应该是 main.o : main.c defs.h
并且下面应该跟个命令 cc -c main
五:关于包含的定义
关注一下vpath。将包含的目录都包含进去。这个以后再研究。呵呵
一定要注意所有的命令前面都要加“Tab”。