makefile的目的是為了減少編譯, 管理工程, 如果乙個100個原始檔, 只修改了乙個原始檔而要全部重新編譯的話, 有點耗時
所以需要乙個工具來管理, 這個工具就是makefile
target ...
: prerequisites ...
command
.....
.
targe是目標檔案, 可以是可執行檔案,也可以是標籤(clean)
依賴就是生成目標需要的檔案
command是生成目標需要的命令
原理是, 先看main的依賴檔案, 檢視有沒有這些依賴檔案,如果沒有就去查詢這個目標, 然後用命令來生成
我們看到最後乙個clean沒有依賴,所以不會去查詢與i來, 下面的命令也不會執行, 所以如果我們要執行clean這個命令, 就需要make clean這樣顯式的指出make clean
但是有乙個問題就是, 如果有檔名和clean重名怎麼辦, 這個時候就需要為偽命令的使用了.
如果make完成後,自己另外定義乙個名叫clean的檔案,再執行make clean時,將不會執行rm命令。
為什麼要使用偽目標
1為了避免在makefile中定義的只執行命令的目標和工作目錄下的實際檔案出現名字衝突
.phony:clean
那麼目錄中不論是否有clean檔案,只要輸入"make clean"就能執行rm命令了。
當乙個目標被宣告為偽目標後,make在執行規則時不會去試圖去查詢隱含規則來建立它。這樣就提高了make的執行效率,也不用擔心由於目標和檔名重名了。
2 另一種是提交執行makefile時的效率, 偽目標的另一種使用場合時在make的並行和遞迴執行過程中
main: main.o
gcc -o main main.o
main.o: main.c
gcc -c main.c
.phony:clean
clean:
rm *
.o rm main
makefile學習筆記 makefile概述
20180411 makefile學習筆記 makefile概述 makefile主要是在unix下軟體編譯時寫的,window下一般不用 unix裡makefile做的事 相當於window裡ide所做的事 會不會寫makefile,從乙個側面說明了乙個人是否具備完成大型工程的能力。makefil...
Makefile學習筆記
makefile for boot asm nasm 定義變數 asmflags i include run qemu system i386 hdd boot.img boot.img boot.asm asm boot.asm f bin o boot.img install run clean...
Makefile學習筆記
本文為學習筆記,僅供參考,如有好的建議歡迎指出!makefile規則 目標檔案 依賴檔案 tab 命令 命令前必須有乙個tab exp test main.c gcc main.c o test 隱式規則 o c 同名匹配 變數 類似於c中的巨集,引用方式 arg 變數名 值 引用變數可在之後定義 ...