關於make命令,執行make命令的時候,系統會在當前目錄下找名為Makefile或makefile的文件進行編譯,如果你的makefile是別的名字的話,可以使用make –f filename來指定你的makefile。
直接寫一個簡單的makefile吧:
假設有一個源文件:main.c
那么用gcc編譯它的命令是:gcc main.c –o main
我創建一個名為makefile的文件,makefile的基本格式為“目標:依賴 命令”
makefile內容為:
main : main.c gcc main.c –o main |
在終端執行make命令就可以得到main文件了
假設我有a.c,b.c, main.c三個源文件,最終要編譯成一個名為main的可執行文件
則makefile內容為
main : a.o b.o main.o gcc a.o b.o main.o -o main main.o : main.c gcc -c main.c b.o : b.c gcc -c b.c a.o : a.c gcc -c a.c # 用".PHONY {目標名}"定義一個偽目標 # 用"make {目標名}"執行該偽目標 .PHONY : clean clean : @rm -f main *.o @echo 'clean' |
此時執行make命令,終端會顯示系統執行的每條命令,如果你不想系統顯示它執行的命令,在每條命令的前面加上“@”即可。
如果我想清除掉我編譯后的文件,可以rm命令,當然我們也可以清除的功能寫入到makefile里邊。
makefile提供了一個偽目標的功能,可以為你的makefile提供額外的功能。
下面是提供了clean功能的makefile
main : a.o b.o main.o @gcc a.o b.o main.o -o main @echo ok @gcc -c main.c b.o : b.c @gcc -c b.c a.o : a.c @gcc -c a.c # 用".PHONY {目標名}"定義一個偽目標 # 用"make {目標名}"執行該偽目標 .PHONY : clean clean : @rm -f main *.o @echo clean |
執行make clean即可進入clean的功能
此外,makefile提供了系統默認的自動化變量
$^:代表所有依賴文件
$@:代表目標
$<:代表第一個依賴文件
所以我們可以用
gcc $^ -o $@
代替剛剛makefile中的
gcc a.o b.o main.o -o main
關於makefile的附件:http://pan.baidu.com/share/link?shareid=135850&uk=3238766853