前言
本篇用一個最簡單的例子引入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是清除所有生成文件~
效果如下:

