Makefile知識要點

2021-07-07 06:14:07 字數 1105 閱讀 2417

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中的規則 三部分 目標 依賴 命...