1.当Makfile中的第一条规则目标名以”.”开始(不包括”./”)或者是模式规则时,并不作为”终极目标”
2.”$”表示变量和函数的引用,”$$”表示”$”
3.”order-only”依赖列表,order-only依赖的更新不会导致目标的更新
Targets:Normal-prerequisites | order-only-prerequistites
4.目录搜索时的VPATH,vpath,GPATH等含义以及导致重建目标所在目录的不同,$^表示通过目录搜索得到的依赖文件的完整路径名,$@比代表规则目标,隐含规则的命令就采用自动化变量来解决目录问题
5.隐含变量$(RM)=rm -f,在GUN make中应尽量采用伪目标.PHONY的方式,而非不包含依赖和命令的强制目标
6.多规则目标下,只能有一个规则给出重建此目标的命令,如果有多个规则给出了重建命令,则默认采用最后一个规则的命令。当同一目标要采用不同规则中的命令时,应采用”双冒号”规则
7.静态编译模式
Target….:Target-Pattern:Prereq-Patterns
8.双冒号规则与单冒号规则的不同

对于空依赖的双冒号规则,命令无条件执行;单冒号规则当目标文件存在时,永远不执行。双冒号规则针对同一目标不会进行规则合并,而是单独处理,即只执行由于依赖文件修改触发的规则
9.利用gcc -MM 和 sed 自动生成依赖关系.

转载请注明来源:Leoncom-《Reading notes about Makefile rules》
Trackback

no comment untill now

Add your comment now