- 隐含规则:约定俗成,不用写出。
- foo.o:foo.c foo.h这类规则可以不写,隐含规则会自动推到并调用;如果不想使用隐含规则,就自己写出;每一条隐含规则都在库中有其顺序。
- 隐含规则对于不同语言类似,主要熟悉C/C++的默认推导规则。
- 隐含规则中会使用的常用变量:AR,CC,CPP, CXX, RM, CFLAGS,ARFLAGS,CXXFLAGS.
- 隐含规则链:生成的中间文件会被rm -f掉,可以设置伪目标不让其删除。
- 模式规则:%
- 自动化变量:$@,$^,$%,$?,$*,$<,$+,$(@D),$(@F)...
- 后缀规则:eg:.c.o:等价于.o:.c; 使用伪目标".SUFFIXES"来定义或是删除后缀规则。
- 函数库文件:foolib(hack.o hac.o he*.o); foolib(hack.o):hack.o;ar cr foolib hack.o
- 使用"make foo.a(bar.o)"的形式调用Makefile时,隐含规则会去找"bar.o"的规则,如果没有定义bar.o的规则,那么内建隐含规则生效,make会去找bar.c文件来生成bar.o;注意自动化变量$%的使用;
- 使用后缀规则和隐含规则来生成函数库文件:.c.o:
- 使用函数库文件时尽量不要用“-j”参数,可能会损坏库文件
posted @
2012-03-21 13:17
flyfisher
阅读(
112)
评论()
收藏
举报