[Linux]Makefile入門


關於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.cb.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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM