Makefile 的語法、撰寫與使用方式

參考文獻

通常我們編譯程式時有很多算是每個人都有的共同習慣,例如我就是把 foo.c 編成foo.o。像這樣的編譯習慣,gnu make有一些內定規則來編譯, 也就是有的target你不寫,make也可以根據內定規則把他編譯出來。不用 對每個不同的.o寫不同的規則, 如果有個程式由foo.c foo1.c foo2.c……寫這些就寫得會發瘋了,例如

foo.o:foo.c
gcc -c -o foo.o foo.c
foo1.o:foo1.c
gcc -c -o foo1.o foo1.c
….

因此 如果你不寫foo.o的規則,那麼make當別的規則用到foo.o時,他找不到規則 來編,就會自動找foo.c來編譯。這樣看不到的編譯規則有很多,如
C程式
$(CC) -c $(CPPFLAGS) $(CFLAGS) xxx.c來編譯
或者找不到.c時會去找.cc, .cpp, .C檔

C++程式
$(CXX) -c $(CPPFLAGS) xxx.cpp

TeX
xxx.dvi 由xxx.tex產生

Pascal
$(PC) -c $(PFLAGS) xxx.p

  1. Chapter 5. Makefile撰寫 — http://www.study-area.org/cyril/opentools/opentools/makefile.html
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License