Wednesday, February 10, 2021

Makefile 簡介

在軟體開發中,make 是一個工具程式,經由讀取一個叫做 makefile 的檔案,自動化建構軟體。

編譯小型程式可用簡單的命令編譯或 shell script 編譯,但當程式很大且包含大量標頭檔和函式庫時,就需要使用 makefile。


makefile 會將程式分成好幾個模組,根據裡面的

1. 目標 (target)

2. 規則 (rule) 

3. 檔案的修改時間進行判斷哪些需要重新編譯,

可以省去大量重複編譯的時間,這在大型程式中尤為有用。

Make 的工作流程

一般來說,當我們輸入 make 命令,會執行以下內容:

1. make 會在當前目錄下按順序找尋文件名為 GNUmakefile、makefile 或 Makefile 的文件。

2. 在 makefile 文件中的找到第一個目標文件(target),並把這個文件作為最終的目標文件。

3. 如果沒找到或目標文件所依賴的文件,或修改時間要比目標文件新,則 make 將執行後面所定義的命令來生成這個文件,如此遞迴下去找到文件彼此的依賴關係,直到最終編譯出第一個目標文件。

如果最後被依賴的文件找不到,那麼 make 就會直接退出並報錯,而對於所定義的命令的錯誤或是編譯不成功,make 不予理會。

Makefile 主要內容

Makefile 裡主要包含了五個東西:顯式規則、隱式規則、變量定義、文件指示和註釋。

  • 顯式規則顯式規則表示如何生成一個或多個目標文件。
  • 隱式規則:比較簡略地書寫 Makefile 規則,例如規則中有 .o 文件,make 會自動的把 .c 文件也加入依賴關係中。
  • 變數定義類似 C 語言中的 define,定義的變數都會置換到引用位置上。
  • 文件指示:
    • 類似 C 語言中的 include,一個 Makefile 中引用另一個 Makefile,如 include makefile.inc。
    • 類似 C 語言中的 預編譯 #if,根據某些情況指定 Makefile 中的有效部分。
  • 註釋與換行:Makefile 中只有行註釋,用 # 符號;換行則是使用 \ 符號 。

No comments:

Post a Comment

n8n index

 【n8n免費本地端部署】Windows版|程式安裝x指令大補帖  【一鍵安裝 n8n】圖文教學,獲得無限額度自動化工具&限時免費升級企業版功能