美思 [GNU Make] Makefile 教學

Make 是編譯自動化軟體的濫觴,在類 Unix 系統上廣泛使用著。Make 有多個實作品,本系列文章介紹 GNU Make,這是一套普遍的 Make 實作品。

撰寫 Makefile 是開立新專案時需要的動作。但這是一項高度重覆的任務,故筆者基於這份教學,寫了 C 應用程式樣板專案C 函式庫樣板專案。這些樣板專案的目的在於減少重覆的 Makefile 撰寫。

筆者不使用 Autotools 的原因在於 Autotools 不適用於 Windows 系統;不用 CMake 是因為可以繼續使用 Make 的語法而不用重新學一套新的專案設定檔語言。

[GNU Make] Makefile 教學:介紹

一般來說,make(1) 會在介紹 C (或 C++) 時一併介紹,但 make 其實不限於編譯 C (或 C++) 程式,而是一種通用的編譯自動化 繼續閱讀

[GNU Make] Makefile 教學:如何使用 make 指令

由於 make 是純命令列工具,本身沒有函式庫,使用 make 的前提是熟悉系統上的指令,因為 make 需要呼叫外部程式來滿足實際的功能。make 繼續閱讀

[GNU Make] Makefile 教學:即使是新手也可以馬上開始寫 Makefile

我們這裡展示一個初階的 (naive) Makefile,本例摘自筆者先前練資料結構的微型程式。在這裡,我們刻意地少用 繼續閱讀

[GNU Make] Makefile 教學:如何在 Makefile 中設置變數

在前文的例子中,我們將所有的指令都寫死在 Makefile 中,這樣的做法雖然直觀,但不一定是最方便的做法。例如,筆者所用的某個雲端環境有 繼續閱讀

[GNU Make] Makefile 教學:使用條件編譯建立靈活的 Makefile

在前文中,我們將 Makefile 參數化,通用性改善一些,但仍然有一些小缺失,像是 CC 寫死在 Makefile 中,每次要換編譯器時都要修改檔案;另外,CFLAGS 繼續閱讀

[GNU Make] Makefile 教學:為應用程式專案撰寫跨平台的 Makefile

在先前的文章中,我們都假定專案使用者使用某種類 Unix 系統,但實際上專案有可能在 Windows 系統上編譯;因此,本文考慮跨平台的需求來撰寫 繼續閱讀

[GNU Make] Makefile 教學:為函式庫專案撰寫跨平台的 Makefile

承接上一篇文章,我們在本文中為函式庫專案撰寫跨平台的 Makefile。藉由本文所提供的範例,我們可以直接用 GNU Make 製作跨平台函式庫專案 繼續閱讀

[GNU Make] Makefile 教學:如何建立多設定檔專案

隨著專案變大,Makefile 長度也會逐漸拉長,若再加上跨平台的需求,設定檔會更加冗長。在一個專案中,make 繼續閱讀

[GNU Make] Makefile 教學:如何使用巨集 (Macro) 包裝程式碼區塊

在我們先前的文章中,我們大部分的 Makefile 僅用到變數代換和條件編譯兩項語法特性,其他的特性主要是來自於命令列工具本身。如果我們想要在 繼續閱讀

[GNU Make] Makefile 教學:如何使用 Make 內建函式進行字串處理等任務

在 GNU Make 4.0 版之前,make 的程式語言相關的特性相對單薄,如果和 Rake 或 Gradle 等新興的編譯自動化軟體比起來更是如此。在 繼續閱讀