乙個通用Makefile的編寫

2021-06-28 15:30:09 字數 945 閱讀 4109

我們在linux環境下開發程式,少不了要自己編寫makefile,乙個稍微大一些的工程下面都會包含很多.c的原始檔。如果我們用gcc去乙個乙個編譯每乙個原始檔的話,效率會低很多,但是如果我們可以寫乙個makefile,那麼只需要執行乙個make就ok了,這樣大大提高了開發效率。但是makefile的語法規則眾多,而且缺乏參考資料,對於初學者來說,寫起來還是有一定的難度,往往令很多人望而生畏。下面我們介紹乙個比較通用而且簡潔的makefile,大家只要對它稍作修改就可以用在你們自己的工程裡了。

這是乙個傻瓜式的makefile,不靈活,而且不具備可複製性,想象乙個如果我們的工程下面有50個原始檔,那豈不是要乙個乙個寫出來。我們的目標是寫乙個makefile,只要稍作修改就可以在各個工程之間通用。

下面這個makefile就可以滿足這個要求:

srcs = $(wildcard *.c)

objs = $(srcs:.c = .o)

cc = gcc

includes = -i/home/noah/build_sqlite3/include

libs = -l/home/noah/build_sqlite3/lib -lsqlite3

ccflags = -g -wall -o0

%.o : %.c

$(cc) -c $< $(ccflags) 

clean:

rm *.o

大家看這個makefile和前乙個比起來是不是簡潔很多,當然理解起來不如上乙個那麼直觀。實際上編寫makefile就是為了提高我們的工作效率,而不是增加我們的工作量。因此makefile為我們提供了很多強大的功能,比如定義變數,使用萬用字元等等。只要合理利用,就可以達到事半功倍的效果。

下面我們一條一條分析這個makefile:

這個makefile就具備靈活的通用性,我們只要對它稍作修改就可以用在自己的工程裡面。當然makefile還有很多強大的功能,需要我們進一步學習。

編寫乙個簡單通用的makefile

author 李超 date 2012 05 06 縱然makefile 的規則還是相當多的,編寫乙個大規模的軟體,良好的 makefile 架構是方便維護程式編譯的關鍵。學習 makefile 的時間週期還是比較長的,為了寫出規範的 需要在很短的時間內編寫乙個 makefile 這裡給給出乙個 m...

編寫乙個通用的Makefile檔案

1.1在這之前,我們需要了解程式的編譯過程 a.預處理 檢查語法錯誤,展開巨集,包含標頭檔案等 b.編譯 c s c.彙編 s o 1.2體驗在vc下程式的編譯 a.先編譯,在鏈結 b.修改了哪個檔案,就單獨編譯此檔案,在鏈結 c.修改了哪個標頭檔案,就單獨編譯使用該標頭檔案的原始檔,在鏈結 1.3...

編寫乙個makefile

什麼是makefile?對於大多數的windows程式設計師來講,makefile可能不是那麼重要,因為windows的ide都為程式設計師做好了這個工作。但是在linux下程式設計,會不會寫makefile,從側面上說明乙個人是否具備完成大型工程的能力。makefile的作用 makefile是用...