淺談 Linux 下 Makefile 編寫

answer發表於2016-04-26

前言:本文簡要介紹Makefile檔案的編寫規範,結合具體專案中的應用進行講解。

具體程式碼地址: https://github.com/AnSwErYWJ/DogFood/blob/master/Makefile

簡介

Make工具最主要也是最基本的功能就是通過makefile檔案來描述源程式之間的相互關係並自動維護編譯工作。而makefile 檔案需要按照某種語法進行編寫,檔案中需要說明如何編譯各個原始檔並連線生成可執行檔案,並要求定義原始檔之間的依賴關係。

make命令的選項與引數

語法

makefile檔案由一組依賴關係和規則組成。每個依賴關係由一個目標(即將要建立的檔案)和一組該目標所依賴的原始檔組成。

依賴關係

依賴關係定義了最終應用程式裡的每個檔案與原始檔之間的關係。

上面兩行就是依賴關係:目標a.out:依賴於main.o,目標main.o依賴於main.c和main.h。所以,如果main.c和main.h發生更改,則需要重新編譯整個程式。

如果需要一次建立多個目標檔案,則使用為目標all:

注意:如果未指定一個all目標,則make命令只建立makefile檔案的第一個目標。

規則

規則定義了目標的建立方式。

注意:規則所在行必須以製表符tab開頭。

下面就是一個簡單的例子:

make命令會自行判斷檔案的正確順序,並使用給出的規則建立相應的檔案,並在螢幕顯示出來。如果多次編譯,則make命令會讀取makefile檔案來確定重建目標的最少命令,而不會重複編譯。

註釋

makefile檔案的註釋以#開頭,到一行的結束。

巨集

makefile檔案中也可以定義巨集,也可以用make命令時在命令列定義,如果需要使用檔案外部定義,最好不要用空格。

內建巨集:

應用

下面放一個我寫的Makefile

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

任選一種支付方式

淺談 Linux 下 Makefile 編寫 淺談 Linux 下 Makefile 編寫

相關文章