本文共 828 字,大约阅读时间需要 2 分钟。
二、内部规则
迄今为止,我们已经能够在makefile中给出相应的规则来指出具体的处理过程。实际上,除了我们显式给出的规则外,make还具有许多内部规则,这些规则是由预先规定的目标、依赖文件及其命令组成的相关行。在内部规则的帮助下,可以使makefile变得更加简洁,尤其是在具有许多源文件的时候。现在以实例加以说明,首先建立一个名为foo.c的C程序源文件,文件内容如下所示:
#include #include int main() { printf(“Hello World\n”); exit(EXIT_SUCCESS); } |
现在让我们用make命令来编译它:
$ make foo cc foo.c -o foo $ |
您会惊奇地发现,尽管我们没有指定makefile,但是make仍然能知道如何调用编译器,并且调用的是cc而不是gcc编译器。这在Linux上没有问题,因为cc常常会链接到gcc程序。这完全得益于make内建的内部规则,另外这些内部规则通常使用宏,所以只要为这些宏指定新的值,就可以改变内部规则的默认动作,如下所示:
$ rm foo $ make CC=gcc CFLAGS=”-Wall -g” foo gcc -Wall -g foo.c -o foo $ |
当然,我们更关心的是如何利用内部规则来简化makefile,比如让内部规则来负责生成目标,而只指定依赖关系,这样makefile就简洁多了,如下所示:
main.o: main.c def1.h f1.o: f1.c def1.h def2.h f2.o: f2.c def2.h def3.h |
转载地址:http://dbkci.baihongyu.com/