前言
本篇用一个最简单的例子引入makefile,教你编写第一个makefile
正文
在Download/aa文件夹下有a.c和makefile文件
1 litao@litao:~/Downloads/aa$ ls 2 a.c makefile
其中a.c为:
1 #include<stdio.h> 2 int main() 3 { 4 int i,j; 5 for(i=0;i<10;i++) 6 { 7 for(j=2*i+1;j>0;j--) 8 { 9 printf("#"); 10 } 11 printf("\n"); 12 } 13 }
其中makefile为:
其格式为:
1 a:a.o #linK 2 gcc a.o -o a 3 a.o:a.s #汇编Assembling 4 gcc -c a.c -o a.o 5 a.s:a.i #编译 6 gcc -S a.i -o a.s 7 a.i:a.c #pre-processing 8 gcc -E a.c -o a.i 9 10 11 run: 12 ./a 13 clear: 14 rm -rf a.o a.s a.i a
makefile文件的基本单元是规则。一条规则指定一个或多个目标文件,目标文件后面跟的是编译生成该目标文件所依赖的文件或模块,最后是生成或更新目标文件所用的命令。格式如下:
其中[]中的内容是可选的。
上面第1、2行构成一个规则~
特别注意生成目标文件所用命令必须以Tab键开头(如果某一行以tab键开头,make就认为是命令)
在依赖文件列表后面加一个;号可以跟命令,如下:
11、12行是什么鬼?
是伪目标!
在makefile文件中,目标文件可以分为两类:实目标和伪目标。实目标文件是真正要生成的、以文件的形式存放在硬盘上的目标。伪目标不要求生成实际文件,而是为了让make执行一些辅助命令,如打印一些信息、删除无用中间文件等,这里的run是运行生成a程序,clear是清除所有生成文件~
效果如下:
本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/5081291.html,如需转载请自行联系原作者