我們在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是用...