ChatGPT 問答:

<aside> ❓ 請說明用 mask 指令執行 Makefile 和直接用 code editor 中的編譯器直接編譯有什麼區別。

使用 Makefile 和直接使用編譯器進行編譯之間有幾個主要區別:

  1. 自動化編譯:Makefile 提供了一種自動化編譯的機制,可以根據項目中的文件依賴關係和修改時間,僅重新編譯必要的文件,從而節省時間並提高效率。相比之下,直接使用編譯器需要手動指定所有的編譯命令,無法自動處理文件依賴關係。
  2. 配置管理:Makefile 可以包含各種配置選項和編譯參數,使得編譯過程更加靈活和可配置。通過修改 Makefile 中的參數,可以輕鬆地定製編譯過程,而直接使用編譯器則需要手動指定所有的編譯參數。
  3. 跨平台支持:Makefile 可以根據不同的操作系統和環境配置不同的編譯命令和參數,從而實現跨平台的編譯支持。相比之下,直接使用編譯器可能會因為不同的操作系統或環境而產生兼容性問題。
  4. 依賴管理:Makefile 可以根據文件之間的依賴關係自動判斷哪些文件需要重新編譯,從而確保編譯過程的正確性和一致性。而直接使用編譯器則需要手動處理文件之間的依賴關係,容易出現錯誤。

總的來說,使用 Makefile 可以提高編譯過程的自動化程度和靈活性,並確保編譯過程的正確性和效率。因此,在大型項目中通常會使用 Makefile 來管理和執行編譯過程。

</aside>

簡而言之,使用 Makefile 可以在編譯上更有效率(直接控制要編譯什麼檔案)也更有彈性(可以自行設定參數)

Makefile 語法和示範 - HackMD

<aside> 💡 注意事項 = 與 ?= 會延後至它們被使用時,才會被展開 := 則會立即展開右邊的值

</aside>

foo.o: common.h
gcc -c foo.c