- 函数库成员的隐含规则
函数库成员的隐含规则
当make搜索一个目标的隐含规则时,一个特殊的特性是,如果这个目标是 a(m)
形式的,其会把目标变成 (m)
。于是,如果我们的成员是 %.o
的模式定义,并且如果我们使用 make foo.a(bar.o)
的形式调用Makefile时,隐含规则会去找 bar.o
的规则,如果没有定义 bar.o
的规则,那么内建隐含规则生效,make会去找 bar.c
文件来生成 bar.o
,如果找得到的话,make执行的命令大致如下:
- cc -c bar.c -o bar.o
- ar r foo.a bar.o
- rm -f bar.o
还有一个变量要注意的是 $%
,这是专属函数库文件的自动化变量,有关其说明请参见“自动化变量”一节。