makefile編寫說明

2021-06-02 08:34:55 字數 1423 閱讀 8909

1.定義:makefile是通過制定規則來編譯程式的乙個指令碼而已。在linux中使用make命令來執行makefile檔案。

2.命名:makefile或makefile,若是指定其他名稱。如:makefile.可以這樣使用make -f makefile或make clean -f makefile

3.規則:makefile

target:prerequisties

(tab鍵)command

命令實現:比較target和prerequisties的建立時間,若target比prerequisties時間早,或是不存在,就執行下面的命令。若prerequisties不存在,就在下個標籤中找,若找不到,就報錯。這個就是依賴關係。一層層去找。

4.makefile裡面的內容

makefile裡面包含5個東西:顯示規則,隱諱規則,變數定義,檔案指示及注釋

顯示規則:就是makefile中定義的目標和命令的依賴關係

隱諱規則:make命令自動實現的自動推到

變數定義:像程式設計語音中的,取個名字包含目標或其他名稱

檔案指示:1。makefile中包含另一makefile(如:include)。2.根據某些情況指定makefile中有效部分(#if)。3.定義乙個多行的命令

注釋:#

5.引用其他makefile

語法:include 說明(inlcude前面可以有空格但是不能有tab), filename可以帶路徑和萬用字元,及變數。如include  foo.make *.mk, $(sb) 用空格間隔

6.makefile工作流程

1.讀入所有的makefile

2.讀入include的makefile

3.初始化檔案中的變數

4.推到隱諱規則

5.為所有的規則建立依賴鏈

6.根據依賴關係,決定生產目標

7.執行命令

7.makefile中特殊用法:

7.1萬用字元:*,?, ...。支援轉義字元\

7.2.關鍵字

wildcard

vpath:自動搜尋,

vpath ,在dirctories下搜尋符合patter

vpath ,vpath,分別清楚特定格式路徑,和清楚所有被設定的路徑

eg.vpath %.h ../headers,在「../headers」目錄下搜尋所有.h檔案

vpath %.c foo:bar 現在foo目錄下找.c, 再在bar目錄下找.c

自動化變數:$@目標集,$%當目標是函式庫檔案,則表示規則中的目標成員。$《表示依賴目標中的第乙個目標。$?所有比目標新的依賴目標集合,以空格分隔。$+所有依賴目標集合。$*表示目標模式中%及之前的部分。

d和f:比如:dir/foo.o.對$(@d)為dir.。對$(@f)為foo.o

$(*d),$(*f)為檔案目錄和檔案部分

其他類推。。。

makefile編寫相關符號及命令說明

1 含義 例 main main.omytool1.o mytool2.o gcc o 表示目標檔案,如 main,表示依賴檔案,如main.o mytool1.o mytool2.o。2 含義 例 name name1 name2 command 表示依次跳轉,執行相應標籤或目標,比如上例,先跳轉...

makefile簡說 編寫makefile

linux下原始碼編譯 linux下原始碼編譯c c 通常使用gnu工具鏈。c c 的編譯過程,通常為原始檔 c cc cpp字尾檔案 編譯為中間目標檔案 即生成為.s o等字尾的中間檔案 再通過鏈結生成可執行檔案 編譯器的編譯過程大致分為四個步驟 預處理 編譯 彙編和鏈結 建立乙個專案檔案proj...

makefile編寫方法

什麼是makefile?或許很多winodws的程式設計師都不知道這個東西,因為那些windows的ide都 為你做了這個工作,但我覺得要作乙個好的和 professional的程式設計師,makefile還是要懂 這就好像現在有這麼多的html的編輯器,但如果你想成為乙個專業人士,你還是要了解 h...