clean:
rm*.o
.phony: clean
phony顯式地告訴「make」clean的是偽目標,那麼每次makeclean必然會執行rm *.o。否則存在一種可能性,假如當前路徑下有乙個名為clean的檔案,因為clean這個目標又沒有依賴的檔案,那這個clean檔案永遠被認為是最新的,導致rm指令永遠不會執行。
force: ;
.phony: force
定義了乙個空的目標,沒有做任何事情
all: target1 target2 target3 force
***x
在最後加乙個force,起的作用就是make all時永遠判斷為需要更新,即***x指令永遠被執行。
-ssilent,不列印執行的命令
-r no built-inrules,禁止隱含規則,如目標的自動推導,如a.o自動依賴於a.c。
-r no built-in variables, 禁止隱含的變數,如自動使用系統變數$cflags。
-w print-directory 輸出執行makefile前和後的資訊(進入xx目錄,退出xx目錄)
變數的賦值方式有兩種,一種是命令列方式
make option=1
另外一種就是在makefile內部的賦值:
option=1
相同的變數,如果命令列make指定了,那麼makefile內部的賦值就不起作用。除非使用override:
override option=1
all:
echo『i am ****** all target』
echo『means unspecified target will come here』
make指定的目標在makefile的其他地方沒有被指定時(比如這裡執行make xx),會執行%::下的指令。即%::相當於v語言**中switch的default目標。當然,當不指定target即只敲make時,這裡只會執行第乙個目標all下的指令。
$@--目標檔案
$^--所有的依賴檔案
$<--第乙個依賴檔案
%是makefile的萬用字元,相當於shell中的*
makefile學習要點彙總
在預設的方式下,也就是我們只輸入make命令。那麼,1 make 會在當前目錄下找名字叫 makefile 或 makefile 的檔案。2 如果找到,它會找檔案中的第乙個目標檔案 target 在上面的例子中,他會找到 edit 這個檔案,並把這個檔案作為最終的目標檔案。3 如果 edit 檔案不...
Makefile 入門知識
這篇文章介紹在linux下進行c語言程式設計所需要的基礎知識。在這篇文章當中,我們將會學到以下內容 源程式編譯 makefile的編寫 程式庫的鏈結 程式的除錯 標頭檔案和系統求助 1.源程式的編譯 在linux下面,如果要編譯乙個c語言源程式,我們要使用gnu的gcc編譯器。下面我們以乙個例項來說...
Makefile知識小記
gcc是linux中的編譯器,它是通過某種規則來進行編譯的,在這之前還有乙個linux自帶的構建器叫make,make也需要通過某種規則來構建,而這些規則就通過makefile來設定。makefile檔案的命名可以是makefile或makefile。makefile中的規則 三部分 目標 依賴 命...