写Makefile,的确算是一个老掉牙的话题,国外关于这方面的文章实在太多,但是国内却没有人认真去翻译一下.导致真正需要用到Makefile的时候,往往只能照猫画虎,知其然,而不知其所以然.
这篇Blog我也不打算从头写起,只准备挑一两个我不明白的地方记录一下.
基本格式:
target [target...] : [dependent ....]
[ command ...]
Implict Rules -- 隐含规则
在Makefile里面,有时候会用到隐含规则.隐含规则的格式往往比较隐晦,所以理解起来比较困难.
例如以下这个例子:
.c.o:
$(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<
这个地方,可以看到它似乎不符合标准格式. 因为这就是一个典型的隐含规则.
.c,.o都是文件扩展名(suffix),而且是标准的文件扩展名.所谓标准指得是为Make所认可的文件扩展名.一看到这种扩展名,Make就知道是什么意思.
2个标准suffix连续出现,并且后面有一个":",Make就认为这是一个隐含规则,就会执行后面的命令.
$@ 是特殊的Macro,指得是target;
$< 也是特殊的Macro,指得是source;
而在上面这个隐含规则中,.c是source,.o是target,不要写反了.
阅读(1581) | 评论(0) | 转发(0) |