首頁 > 軟體

Makefile入門基礎:Makefile簡介

2020-06-16 16:45:23

一、make簡介

make是一個指令工具,它解釋makefile中的指令或者說規則。makefile檔案描述了整個工程中所有檔案的**編譯順序,編譯規則**。Makefile也有自己的編寫規則,通常,我們所使用的IDE都會生成相應的makefile,然後再根據makefile來進行編譯,只是這些操作是由IDE來完成,我們只需要點選一個編譯按鈕。

二、為什麼要使用make

現在可以在GitHub上看到,很多的開源專案,在編譯的時候,都是使用make來完成的,也就是說,都有其對應的makefile。他們都有個特點,那就是檔案很多。

考慮這樣一種情況,我們的專案現在有三、四十個檔案,你使用的不是IDE工具,而是命令列,那麼不同的人,在編譯你的專案的時候,都需要一個一個檔案的

gcc -o asample.c bsample.c ...... xxx.out

,這樣慢慢的一個檔案,一個檔案的去找到以後再編譯嗎?

答案肯定是否定的,當你工程的檔案多了以後,時間一長,可能你自己都不能記住所有的檔案。所以,這個時候我們就可以使用make來根據makefile對整個專案進行管理。除此之外,make還有一個優點,那就是當你修改你的檔案以後,make只會編譯更新的檔案以及它相關依賴的檔案。這裡後邊進行詳細的解釋,意思就是,當你只修改了幾十個檔案中的某一個檔案時,make只會重新編譯跟你修改的檔案有關聯的檔案,而不是所有的檔案。這就大大的減短了編譯的時間。

三、makefile簡介

在我們執行make之前,需要有一個名為makefile或Makefile的檔案。這個檔案用來告訴make需要完成什麼樣的操作。我們可以簡單的把makefile認為是一份定義了原始檔間依賴關係、如何編譯各個原始檔並生成可執行檔案的說明書。

四、makefile的基本結構

TARGET... : PREREQUISITES...
    COMMAND
    ...
    ...

TARGET:規則的目標,最終生成檔案的名字或者是中間過程檔名,也可以是make執行的動作的名稱。

PREREQUISITES:規則的依賴,生成目標所必須的檔名列表。

COMMAND:規則的命令。規則需要執行的動作

注意:這裡需要注意的是,命令前面使用的是TAB鍵,而不是空格,使用空格會出現錯誤。

五、第一個makefile

makefile檔案內容如下

hello :
    echo "hello makefile"
test :
    echo "test"
    pwd
    ls

執行結果如圖所示

從圖中可以看到,我們執行make時,列印了echo "hello makefile"和hello makefile兩句話。使用make hello的結果跟make相同,而使用make test,的列印結果,則與前面兩者不同。

為什麼會是這樣呢?

因為make在執行時,如果沒有引數,那麼就會首先執行第一個規則,而make hello和make test則是執行對應目標下的規則,所有,雖然make和make hello的結果是相同的,但是實際上,兩者的意義還是有區別的。

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新連結地址https://www.linuxidc.com/Linux/2018-09/154228.htm


IT145.com E-mail:sddin#qq.com